{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 4: Multi-factor Model\n",
    "## Instructions\n",
    "Each problem consists of a function to implement and instructions on how to implement the function.  The parts of the function that need to be implemented are marked with a `# TODO` comment. After implementing the function, run the cell to test it against the unit tests we've provided. For each problem, we provide one or more unit tests from our `project_tests` package. These unit tests won't tell you if your answer is correct, but will warn you of any major errors. Your code will be checked for the correct solution when you submit it to Udacity.\n",
    "\n",
    "## Packages\n",
    "When you implement the functions, you'll only need to you use the packages you've used in the classroom, like [Pandas](https://pandas.pydata.org/) and [Numpy](http://www.numpy.org/). These packages will be imported for you. We recommend you don't add any import statements, otherwise the grader might not be able to run your code.\n",
    "\n",
    "The other packages that we're importing are `project_helper` and `project_tests`. These are custom packages built to help you solve the problems.  The `project_helper` module contains utility functions and graph functions. The `project_tests` contains the unit tests for all the problems.\n",
    "\n",
    "### Install Packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting alphalens==0.3.2 (from -r requirements.txt (line 1))\n",
      "  Downloading https://files.pythonhosted.org/packages/a5/dc/2f9cd107d0d4cf6223d37d81ddfbbdbf0d703d03669b83810fa6b97f32e5/alphalens-0.3.2.tar.gz (18.9MB)\n",
      "\u001b[K    100% |████████████████████████████████| 18.9MB 24kB/s  eta 0:00:01    29% |█████████▍                      | 5.5MB 36.5MB/s eta 0:00:01    56% |██████████████████              | 10.6MB 34.2MB/s eta 0:00:01    64% |████████████████████▊           | 12.2MB 37.5MB/s eta 0:00:01    82% |██████████████████████████▎     | 15.5MB 34.0MB/s eta 0:00:01    98% |███████████████████████████████▋| 18.6MB 30.6MB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: colour==0.1.5 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 2))\n",
      "Collecting cvxpy==1.0.3 (from -r requirements.txt (line 3))\n",
      "  Downloading https://files.pythonhosted.org/packages/a1/59/2613468ffbbe3a818934d06b81b9f4877fe054afbf4f99d2f43f398a0b34/cvxpy-1.0.3.tar.gz (880kB)\n",
      "\u001b[K    100% |████████████████████████████████| 880kB 517kB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: cycler==0.10.0 in /opt/conda/lib/python3.6/site-packages/cycler-0.10.0-py3.6.egg (from -r requirements.txt (line 4))\n",
      "Collecting numpy==1.13.3 (from -r requirements.txt (line 5))\n",
      "  Downloading https://files.pythonhosted.org/packages/57/a7/e3e6bd9d595125e1abbe162e323fd2d06f6f6683185294b79cd2cdb190d5/numpy-1.13.3-cp36-cp36m-manylinux1_x86_64.whl (17.0MB)\n",
      "\u001b[K    100% |████████████████████████████████| 17.0MB 26kB/s  eta 0:00:01   26% |████████▌                       | 4.5MB 32.3MB/s eta 0:00:01    35% |███████████▎                    | 6.0MB 32.5MB/s eta 0:00:01    76% |████████████████████████▌       | 13.0MB 31.6MB/s eta 0:00:01    85% |███████████████████████████▏    | 14.4MB 29.9MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting pandas==0.18.1 (from -r requirements.txt (line 6))\n",
      "  Downloading https://files.pythonhosted.org/packages/11/09/e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/pandas-0.18.1.tar.gz (7.3MB)\n",
      "\u001b[K    100% |████████████████████████████████| 7.3MB 64kB/s  eta 0:00:01    65% |█████████████████████           | 4.8MB 29.4MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting plotly==2.2.3 (from -r requirements.txt (line 7))\n",
      "  Downloading https://files.pythonhosted.org/packages/99/a6/8214b6564bf4ace9bec8a26e7f89832792be582c042c47c912d3201328a0/plotly-2.2.3.tar.gz (1.1MB)\n",
      "\u001b[K    100% |████████████████████████████████| 1.1MB 418kB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: pyparsing==2.2.0 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 8))\n",
      "Requirement already satisfied: python-dateutil==2.6.1 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 9))\n",
      "Requirement already satisfied: pytz==2017.3 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 10))\n",
      "Requirement already satisfied: requests==2.18.4 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 11))\n",
      "Collecting scipy==1.0.0 (from -r requirements.txt (line 12))\n",
      "  Downloading https://files.pythonhosted.org/packages/d8/5e/caa01ba7be11600b6a9d39265440d7b3be3d69206da887c42bef049521f2/scipy-1.0.0-cp36-cp36m-manylinux1_x86_64.whl (50.0MB)\n",
      "\u001b[K    100% |████████████████████████████████| 50.0MB 9.0kB/s eta 0:00:01   12% |████                            | 6.1MB 28.8MB/s eta 0:00:02    19% |██████▏                         | 9.7MB 22.1MB/s eta 0:00:02    24% |███████▊                        | 12.0MB 25.5MB/s eta 0:00:02    31% |██████████                      | 15.6MB 23.1MB/s eta 0:00:02    40% |█████████████                   | 20.3MB 21.5MB/s eta 0:00:02    45% |██████████████▌                 | 22.6MB 25.4MB/s eta 0:00:02    47% |███████████████▎                | 23.9MB 25.2MB/s eta 0:00:02    49% |████████████████                | 24.9MB 25.9MB/s eta 0:00:01    52% |████████████████▊               | 26.1MB 18.7MB/s eta 0:00:02    56% |██████████████████              | 28.3MB 24.3MB/s eta 0:00:01    59% |███████████████████             | 29.6MB 26.6MB/s eta 0:00:01    69% |██████████████████████▏         | 34.7MB 22.1MB/s eta 0:00:01    76% |████████████████████████▍       | 38.1MB 24.0MB/s eta 0:00:01    78% |█████████████████████████       | 39.2MB 25.5MB/s eta 0:00:01    80% |█████████████████████████▉      | 40.5MB 27.3MB/s eta 0:00:01    85% |███████████████████████████▍    | 42.8MB 32.6MB/s eta 0:00:01    90% |████████████████████████████▉   | 45.0MB 25.0MB/s eta 0:00:01    92% |█████████████████████████████▋  | 46.3MB 23.5MB/s eta 0:00:01    94% |██████████████████████████████▍ | 47.4MB 31.4MB/s eta 0:00:01    97% |███████████████████████████████▏| 48.8MB 29.2MB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: scikit-learn==0.19.1 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 13))\n",
      "Requirement already satisfied: six==1.11.0 in /opt/conda/lib/python3.6/site-packages (from -r requirements.txt (line 14))\n",
      "Collecting tqdm==4.19.5 (from -r requirements.txt (line 15))\n",
      "  Downloading https://files.pythonhosted.org/packages/71/3c/341b4fa23cb3abc335207dba057c790f3bb329f6757e1fcd5d347bcf8308/tqdm-4.19.5-py2.py3-none-any.whl (51kB)\n",
      "\u001b[K    100% |████████████████████████████████| 61kB 4.0MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting zipline===1.2.0 (from -r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/15/d3/689f2a940478b82ac57c751a40460598221fd82b0449a7a8f7eef47a3bcc/zipline-1.2.0.tar.gz (659kB)\n",
      "\u001b[K    100% |████████████████████████████████| 665kB 700kB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: matplotlib>=1.4.0 in /opt/conda/lib/python3.6/site-packages (from alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: seaborn>=0.6.0 in /opt/conda/lib/python3.6/site-packages (from alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: statsmodels>=0.6.1 in /opt/conda/lib/python3.6/site-packages (from alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: IPython>=3.2.3 in /opt/conda/lib/python3.6/site-packages (from alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Collecting osqp (from cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "  Downloading https://files.pythonhosted.org/packages/c0/01/8becb29b0d38e0c40eab9e3d54aa8138fa62a010d519caf65e9210021bd3/osqp-0.5.0-cp36-cp36m-manylinux1_x86_64.whl (147kB)\n",
      "\u001b[K    100% |████████████████████████████████| 153kB 2.6MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting ecos>=2 (from cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "  Downloading https://files.pythonhosted.org/packages/55/ed/d131ff51f3a8f73420eb1191345eb49f269f23cadef515172e356018cde3/ecos-2.0.7.post1-cp36-cp36m-manylinux1_x86_64.whl (147kB)\n",
      "\u001b[K    100% |████████████████████████████████| 153kB 2.5MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting scs>=1.1.3 (from cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "  Downloading https://files.pythonhosted.org/packages/b3/fd/6e01c4f4a69fcc6c3db130ba55572089e78e77ea8c0921a679f9da1ec04c/scs-2.0.2.tar.gz (133kB)\n",
      "\u001b[K    100% |████████████████████████████████| 143kB 2.7MB/s eta 0:00:01    99% |███████████████████████████████▉| 133kB 18.0MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting multiprocess (from cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "  Downloading https://files.pythonhosted.org/packages/31/60/6d74caa02b54ca43092e745640c7d98f367f07160441682a01602ce00bc5/multiprocess-0.70.7.tar.gz (1.4MB)\n",
      "\u001b[K    100% |████████████████████████████████| 1.4MB 334kB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: fastcache in /opt/conda/lib/python3.6/site-packages (from cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "Requirement already satisfied: toolz in /opt/conda/lib/python3.6/site-packages (from cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "Requirement already satisfied: decorator>=4.0.6 in /opt/conda/lib/python3.6/site-packages (from plotly==2.2.3->-r requirements.txt (line 7))\n",
      "Requirement already satisfied: nbformat>=4.2 in /opt/conda/lib/python3.6/site-packages (from plotly==2.2.3->-r requirements.txt (line 7))\n",
      "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /opt/conda/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 11))\n",
      "Requirement already satisfied: idna<2.7,>=2.5 in /opt/conda/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 11))\n",
      "Requirement already satisfied: urllib3<1.23,>=1.21.1 in /opt/conda/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 11))\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.6/site-packages (from requests==2.18.4->-r requirements.txt (line 11))\n",
      "Requirement already satisfied: pip>=7.1.0 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Requirement already satisfied: setuptools>18.0 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Collecting Logbook>=0.12.5 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/f6/83/20fc0270614919cb799f76e32cf143a54c58ce2fa45c19fd38ac2e4f9977/Logbook-1.4.3.tar.gz (85kB)\n",
      "\u001b[K    100% |████████████████████████████████| 92kB 3.8MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting requests-file>=1.4.1 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/23/9c/6e63c23c39e53d3df41c77a3d05a49a42c4e1383a6d2a5e3233161b89dbf/requests_file-1.4.3-py2.py3-none-any.whl\n",
      "Collecting pandas-datareader<0.6,>=0.2.1 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/40/c5/cc720f531bbde0efeab940de400d0fcc95e87770a3abcd7f90d6d52a3302/pandas_datareader-0.5.0-py2.py3-none-any.whl (74kB)\n",
      "\u001b[K    100% |████████████████████████████████| 81kB 3.4MB/s ta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: patsy>=0.4.0 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Requirement already satisfied: Cython>=0.25.2 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Collecting cyordereddict>=0.2.2 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/d1/1a/364cbfd927be1b743c7f0a985a7f1f7e8a51469619f9fefe4ee9240ba210/cyordereddict-1.0.0.tar.gz (138kB)\n",
      "\u001b[K    100% |████████████████████████████████| 143kB 2.6MB/s eta 0:00:01  51% |████████████████▋               | 71kB 10.0MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting bottleneck>=1.0.0 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/05/ae/cedf5323f398ab4e4ff92d6c431a3e1c6a186f9b41ab3e8258dff786a290/Bottleneck-1.2.1.tar.gz (105kB)\n",
      "\u001b[K    100% |████████████████████████████████| 112kB 3.7MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting contextlib2>=0.4.0 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/a2/71/8273a7eeed0aff6a854237ab5453bc9aa67deb49df4832801c21f0ff3782/contextlib2-0.5.5-py2.py3-none-any.whl\n",
      "Requirement already satisfied: networkx<2.0,>=1.9.1 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Requirement already satisfied: numexpr>=2.6.1 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Collecting bcolz<1,>=0.12.1 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/6c/8b/1ffa01f872cac36173c5eb95b58c01040d8d25f1b242c48577f4104cd3ab/bcolz-0.12.1.tar.gz (622kB)\n",
      "\u001b[K    100% |████████████████████████████████| 624kB 734kB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: click>=4.0.0 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Collecting multipledispatch>=0.4.8 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/89/79/429ecef45fd5e4504f7474d4c3c3c4668c267be3370e4c2fd33e61506833/multipledispatch-0.6.0-py3-none-any.whl\n",
      "Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Requirement already satisfied: Mako>=1.0.1 in /opt/conda/lib/python3.6/site-packages/Mako-1.0.7-py3.6.egg (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Requirement already satisfied: sqlalchemy>=1.0.8 in /opt/conda/lib/python3.6/site-packages (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "Collecting alembic>=0.7.7 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/a4/06/f1ae8393463c26f3dafa21eebac611088da02a26e1f1e23bd75fee2dbffe/alembic-1.0.7.tar.gz (1.0MB)\n",
      "\u001b[K    100% |████████████████████████████████| 1.0MB 433kB/s eta 0:00:01\n",
      "\u001b[?25hCollecting sortedcontainers>=1.4.4 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/13/f3/cf85f7c3a2dbd1a515d51e1f1676d971abe41bba6f4ab5443240d9a78e5b/sortedcontainers-2.1.0-py2.py3-none-any.whl\n",
      "Collecting intervaltree>=2.1.0 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/e8/f9/76237755b2020cd74549e98667210b2dd54d3fb17c6f4a62631e61d31225/intervaltree-3.0.2.tar.gz\n",
      "Collecting lru-dict>=1.1.4 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/00/a5/32ed6e10246cd341ca8cc205acea5d208e4053f48a4dced2b1b31d45ba3f/lru-dict-1.1.6.tar.gz\n",
      "Collecting empyrical>=0.4.2 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/7b/55/a01b05162b764830dbbac868462f44cd847a5b6523a01ca9f955721819da/empyrical-0.5.0.tar.gz (49kB)\n",
      "\u001b[K    100% |████████████████████████████████| 51kB 2.3MB/s ta 0:00:01    82% |██████████████████████████▎     | 40kB 8.1MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting tables>=3.3.0 (from zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/d7/1b/21f4c7f296b718575c17ef25e61c05742a283c45077b4c8d5a190b3e0b59/tables-3.4.4-cp36-cp36m-manylinux1_x86_64.whl (3.8MB)\n",
      "\u001b[K    100% |████████████████████████████████| 3.8MB 125kB/s eta 0:00:01    72% |███████████████████████▏        | 2.7MB 30.6MB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: pickleshare in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: backcall in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: pygments in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: traitlets>=4.2 in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.15 in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: pexpect; sys_platform != \"win32\" in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: simplegeneric>0.8 in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: jedi>=0.10 in /opt/conda/lib/python3.6/site-packages (from IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: future in /opt/conda/lib/python3.6/site-packages (from osqp->cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "Collecting dill>=0.2.9 (from multiprocess->cvxpy==1.0.3->-r requirements.txt (line 3))\n",
      "  Downloading https://files.pythonhosted.org/packages/fe/42/bfe2e0857bc284cbe6a011d93f2a9ad58a22cb894461b199ae72cfef0f29/dill-0.2.9.tar.gz (150kB)\n",
      "\u001b[K    100% |████████████████████████████████| 153kB 2.4MB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: jsonschema!=2.5.0,>=2.4 in /opt/conda/lib/python3.6/site-packages (from nbformat>=4.2->plotly==2.2.3->-r requirements.txt (line 7))\n",
      "Requirement already satisfied: ipython-genutils in /opt/conda/lib/python3.6/site-packages (from nbformat>=4.2->plotly==2.2.3->-r requirements.txt (line 7))\n",
      "Requirement already satisfied: jupyter-core in /opt/conda/lib/python3.6/site-packages (from nbformat>=4.2->plotly==2.2.3->-r requirements.txt (line 7))\n",
      "Collecting requests-ftp (from pandas-datareader<0.6,>=0.2.1->zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/3d/ca/14b2ad1e93b5195eeaf56b86b7ecfd5ea2d5754a68d17aeb1e5b9f95b3cf/requests-ftp-0.3.1.tar.gz\n",
      "Collecting python-editor>=0.3 (from alembic>=0.7.7->zipline===1.2.0->-r requirements.txt (line 16))\n",
      "  Downloading https://files.pythonhosted.org/packages/c6/d3/201fc3abe391bbae6606e6f1d598c15d367033332bd54352b12f35513717/python_editor-1.0.4-py3-none-any.whl\n",
      "Requirement already satisfied: wcwidth in /opt/conda/lib/python3.6/site-packages (from prompt-toolkit<2.0.0,>=1.0.15->IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.6/site-packages (from pexpect; sys_platform != \"win32\"->IPython>=3.2.3->alphalens==0.3.2->-r requirements.txt (line 1))\n",
      "Building wheels for collected packages: alphalens, cvxpy, pandas, plotly, zipline, scs, multiprocess, Logbook, cyordereddict, bottleneck, bcolz, alembic, intervaltree, lru-dict, empyrical, dill, requests-ftp\n",
      "  Running setup.py bdist_wheel for alphalens ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/77/1e/9a/223b4c94d7f564f25d94b48ca5b9c53e3034016ece3fd8c8c1\n",
      "  Running setup.py bdist_wheel for cvxpy ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/2b/60/0b/0c2596528665e21d698d6f84a3406c52044c7b4ca6ac737cf3\n",
      "  Running setup.py bdist_wheel for pandas ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/a3/08/c3/8fdd52954d4b415624cff43c6dd32a22bac90306976a98f4af\n",
      "  Running setup.py bdist_wheel for plotly ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/98/54/81/dd92d5b0858fac680cd7bdb8800eb26c001dd9f5dc8b1bc0ba\n",
      "  Running setup.py bdist_wheel for zipline ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/5d/20/7d/b48368c8634b1cb6cc7232833b2780a265d4217c0ad2e3d24c\n",
      "  Running setup.py bdist_wheel for scs ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/ff/f0/aa/530ccd478d7d9900b4e9ef5bc5a39e895ce110bed3d3ac653e\n",
      "  Running setup.py bdist_wheel for multiprocess ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/3a/ed/51/77c833462c3e757ce50c4b2b68bdf53f5d1745542fe567d740\n",
      "  Running setup.py bdist_wheel for Logbook ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/a2/9f/6f/8c7a4ed6b9f6f3c98b742dbb0fd41fff3c130119c507376301\n",
      "  Running setup.py bdist_wheel for cyordereddict ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/0b/9d/8b/5bf3e22c1edd59b50f11bb19dec9dfcfe5a479fc7ace02b61f\n",
      "  Running setup.py bdist_wheel for bottleneck ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/f2/bf/ec/e0f39aa27001525ad455139ee57ec7d0776fe074dfd78c97e4\n",
      "  Running setup.py bdist_wheel for bcolz ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/c5/cc/1b/2cf1f88959af5d7f4d449b7fc6c9452d0ecbd86fd61a9ee376\n",
      "  Running setup.py bdist_wheel for alembic ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/f9/71/46/604b8a4f0a04b513f5799c974b556c1de19a70fde41d25672b\n",
      "  Running setup.py bdist_wheel for intervaltree ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/08/99/c0/5a5942f5b9567c59c14aac76f95a70bf11dccc71240b91ebf5\n",
      "  Running setup.py bdist_wheel for lru-dict ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/b7/ef/06/fbdd555907a7d438fb33e4c8675f771ff1cf41917284c51ebf\n",
      "  Running setup.py bdist_wheel for empyrical ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/83/14/73/34fb27552601518d28bd0813d75124be76d94ab29152c69112\n",
      "  Running setup.py bdist_wheel for dill ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/5b/d7/0f/e58eae695403de585269f4e4a94e0cd6ca60ec0c202936fa4a\n",
      "  Running setup.py bdist_wheel for requests-ftp ... \u001b[?25ldone\n",
      "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/2a/98/32/37195e45a3392a73d9f65c488cbea30fe5bad76aaef4d6b020\n",
      "Successfully built alphalens cvxpy pandas plotly zipline scs multiprocess Logbook cyordereddict bottleneck bcolz alembic intervaltree lru-dict empyrical dill requests-ftp\n",
      "Installing collected packages: numpy, pandas, scipy, alphalens, osqp, ecos, scs, dill, multiprocess, cvxpy, plotly, tqdm, Logbook, requests-file, requests-ftp, pandas-datareader, cyordereddict, bottleneck, contextlib2, bcolz, multipledispatch, python-editor, alembic, sortedcontainers, intervaltree, lru-dict, empyrical, tables, zipline\n",
      "  Found existing installation: numpy 1.12.1\n",
      "    Uninstalling numpy-1.12.1:\n",
      "      Successfully uninstalled numpy-1.12.1\n",
      "  Found existing installation: pandas 0.20.3\n",
      "    Uninstalling pandas-0.20.3:\n",
      "      Successfully uninstalled pandas-0.20.3\n",
      "  Found existing installation: scipy 0.19.1\n",
      "    Uninstalling scipy-0.19.1:\n",
      "      Successfully uninstalled scipy-0.19.1\n",
      "  Found existing installation: dill 0.2.7.1\n",
      "    Uninstalling dill-0.2.7.1:\n",
      "      Successfully uninstalled dill-0.2.7.1\n",
      "  Found existing installation: plotly 2.0.15\n",
      "    Uninstalling plotly-2.0.15:\n",
      "      Successfully uninstalled plotly-2.0.15\n",
      "  Found existing installation: tqdm 4.11.2\n",
      "    Uninstalling tqdm-4.11.2:\n",
      "      Successfully uninstalled tqdm-4.11.2\n",
      "Successfully installed Logbook-1.4.3 alembic-1.0.7 alphalens-0.3.2 bcolz-0.12.1 bottleneck-1.2.1 contextlib2-0.5.5 cvxpy-1.0.3 cyordereddict-1.0.0 dill-0.2.9 ecos-2.0.7.post1 empyrical-0.5.0 intervaltree-3.0.2 lru-dict-1.1.6 multipledispatch-0.6.0 multiprocess-0.70.7 numpy-1.13.3 osqp-0.5.0 pandas-0.18.1 pandas-datareader-0.5.0 plotly-2.2.3 python-editor-1.0.4 requests-file-1.4.3 requests-ftp-0.3.1 scipy-1.0.0 scs-2.0.2 sortedcontainers-2.1.0 tables-3.4.4 tqdm-4.19.5 zipline-1.2.0\n",
      "\u001b[33mYou are using pip version 9.0.1, however version 19.0.2 is available.\n",
      "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "!{sys.executable} -m pip install -r requirements.txt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting numpy==1.14.5\n",
      "  Downloading https://files.pythonhosted.org/packages/68/1e/116ad560de97694e2d0c1843a7a0075cc9f49e922454d32f49a80eb6f1f2/numpy-1.14.5-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)\n",
      "\u001b[K    100% |████████████████████████████████| 12.2MB 38kB/s  eta 0:00:01   15% |████▉                           | 1.9MB 34.4MB/s eta 0:00:01    28% |█████████▎                      | 3.5MB 35.6MB/s eta 0:00:01\n",
      "\u001b[?25hInstalling collected packages: numpy\n",
      "  Found existing installation: numpy 1.15.0\n",
      "    Uninstalling numpy-1.15.0:\n",
      "      Successfully uninstalled numpy-1.15.0\n",
      "Successfully installed numpy-1.14.5\n",
      "\u001b[33mYou are using pip version 9.0.1, however version 19.0.2 is available.\n",
      "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "!pip install -U numpy==1.14.5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load Packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import cvxpy as cvx\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import time\n",
    "import project_tests\n",
    "import project_helper\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.style.use('ggplot')\n",
    "plt.rcParams['figure.figsize'] = (14, 8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "## Data Bundle\n",
    "We'll be using Zipline to handle our data. We've created a end of day data bundle for this project. Run the cell below to register this data bundle in zipline."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data Registered\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import project_helper\n",
    "from zipline.data import bundles\n",
    "\n",
    "os.environ['ZIPLINE_ROOT'] = os.path.join(os.getcwd(), '..', '..', 'data', 'project_4_eod')\n",
    "\n",
    "ingest_func = bundles.csvdir.csvdir_equities(['daily'], project_helper.EOD_BUNDLE_NAME)\n",
    "bundles.register(project_helper.EOD_BUNDLE_NAME, ingest_func)\n",
    "\n",
    "print('Data Registered')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build Pipeline Engine\n",
    "We'll be using Zipline's pipeline package to access our data for this project. To use it, we must build a pipeline engine. Run the cell below to build the engine."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from zipline.pipeline import Pipeline\n",
    "from zipline.pipeline.factors import AverageDollarVolume\n",
    "from zipline.utils.calendars import get_calendar\n",
    "\n",
    "\n",
    "universe = AverageDollarVolume(window_length=120).top(500) \n",
    "trading_calendar = get_calendar('NYSE') \n",
    "bundle_data = bundles.load(project_helper.EOD_BUNDLE_NAME)\n",
    "engine = project_helper.build_pipeline_engine(bundle_data, trading_calendar)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "With the pipeline engine built, let's get the stocks at the end of the period in the universe we're using. We'll use these tickers to generate the returns data for the our risk model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Equity(0 [A]),\n",
       " Equity(1 [AAL]),\n",
       " Equity(2 [AAP]),\n",
       " Equity(3 [AAPL]),\n",
       " Equity(4 [ABBV]),\n",
       " Equity(5 [ABC]),\n",
       " Equity(6 [ABT]),\n",
       " Equity(7 [ACN]),\n",
       " Equity(8 [ADBE]),\n",
       " Equity(9 [ADI]),\n",
       " Equity(10 [ADM]),\n",
       " Equity(11 [ADP]),\n",
       " Equity(12 [ADS]),\n",
       " Equity(13 [ADSK]),\n",
       " Equity(14 [AEE]),\n",
       " Equity(15 [AEP]),\n",
       " Equity(16 [AES]),\n",
       " Equity(17 [AET]),\n",
       " Equity(18 [AFL]),\n",
       " Equity(19 [AGN]),\n",
       " Equity(20 [AIG]),\n",
       " Equity(21 [AIV]),\n",
       " Equity(22 [AIZ]),\n",
       " Equity(23 [AJG]),\n",
       " Equity(24 [AKAM]),\n",
       " Equity(25 [ALB]),\n",
       " Equity(26 [ALGN]),\n",
       " Equity(27 [ALK]),\n",
       " Equity(28 [ALL]),\n",
       " Equity(29 [ALLE]),\n",
       " Equity(30 [ALXN]),\n",
       " Equity(31 [AMAT]),\n",
       " Equity(32 [AMD]),\n",
       " Equity(33 [AME]),\n",
       " Equity(34 [AMG]),\n",
       " Equity(35 [AMGN]),\n",
       " Equity(36 [AMP]),\n",
       " Equity(37 [AMT]),\n",
       " Equity(38 [AMZN]),\n",
       " Equity(39 [ANDV]),\n",
       " Equity(40 [ANSS]),\n",
       " Equity(41 [ANTM]),\n",
       " Equity(42 [AON]),\n",
       " Equity(43 [AOS]),\n",
       " Equity(44 [APA]),\n",
       " Equity(45 [APC]),\n",
       " Equity(46 [APD]),\n",
       " Equity(47 [APH]),\n",
       " Equity(48 [ARE]),\n",
       " Equity(49 [ARNC]),\n",
       " Equity(50 [ATVI]),\n",
       " Equity(51 [AVB]),\n",
       " Equity(52 [AVGO]),\n",
       " Equity(53 [AVY]),\n",
       " Equity(54 [AWK]),\n",
       " Equity(55 [AXP]),\n",
       " Equity(56 [AYI]),\n",
       " Equity(57 [AZO]),\n",
       " Equity(58 [BA]),\n",
       " Equity(59 [BAC]),\n",
       " Equity(60 [BAX]),\n",
       " Equity(61 [BBT]),\n",
       " Equity(62 [BBY]),\n",
       " Equity(63 [BCR]),\n",
       " Equity(64 [BDX]),\n",
       " Equity(65 [BEN]),\n",
       " Equity(66 [BIIB]),\n",
       " Equity(67 [BK]),\n",
       " Equity(68 [BLK]),\n",
       " Equity(69 [BLL]),\n",
       " Equity(70 [BMY]),\n",
       " Equity(71 [BSX]),\n",
       " Equity(72 [BWA]),\n",
       " Equity(73 [BXP]),\n",
       " Equity(74 [C]),\n",
       " Equity(75 [CA]),\n",
       " Equity(76 [CAG]),\n",
       " Equity(77 [CAH]),\n",
       " Equity(78 [CAT]),\n",
       " Equity(79 [CB]),\n",
       " Equity(80 [CBG]),\n",
       " Equity(81 [CBOE]),\n",
       " Equity(82 [CBS]),\n",
       " Equity(83 [CCI]),\n",
       " Equity(84 [CCL]),\n",
       " Equity(85 [CELG]),\n",
       " Equity(86 [CERN]),\n",
       " Equity(87 [CF]),\n",
       " Equity(88 [CFG]),\n",
       " Equity(89 [CHD]),\n",
       " Equity(90 [CHK]),\n",
       " Equity(91 [CHRW]),\n",
       " Equity(92 [CHTR]),\n",
       " Equity(93 [CI]),\n",
       " Equity(94 [CINF]),\n",
       " Equity(95 [CL]),\n",
       " Equity(96 [CLX]),\n",
       " Equity(97 [CMA]),\n",
       " Equity(98 [CMCSA]),\n",
       " Equity(99 [CME]),\n",
       " Equity(100 [CMG]),\n",
       " Equity(101 [CMI]),\n",
       " Equity(102 [CMS]),\n",
       " Equity(103 [CNC]),\n",
       " Equity(104 [CNP]),\n",
       " Equity(105 [COF]),\n",
       " Equity(106 [COG]),\n",
       " Equity(107 [COL]),\n",
       " Equity(108 [COO]),\n",
       " Equity(109 [COP]),\n",
       " Equity(110 [COST]),\n",
       " Equity(111 [COTY]),\n",
       " Equity(112 [CPB]),\n",
       " Equity(113 [CRM]),\n",
       " Equity(114 [CSCO]),\n",
       " Equity(115 [CSRA]),\n",
       " Equity(116 [CSX]),\n",
       " Equity(117 [CTAS]),\n",
       " Equity(118 [CTL]),\n",
       " Equity(119 [CTSH]),\n",
       " Equity(120 [CTXS]),\n",
       " Equity(121 [CVS]),\n",
       " Equity(122 [CVX]),\n",
       " Equity(123 [CXO]),\n",
       " Equity(124 [D]),\n",
       " Equity(125 [DAL]),\n",
       " Equity(126 [DE]),\n",
       " Equity(127 [DFS]),\n",
       " Equity(128 [DG]),\n",
       " Equity(129 [DGX]),\n",
       " Equity(130 [DHI]),\n",
       " Equity(131 [DHR]),\n",
       " Equity(132 [DIS]),\n",
       " Equity(133 [DISCA]),\n",
       " Equity(134 [DISCK]),\n",
       " Equity(135 [DISH]),\n",
       " Equity(136 [DLR]),\n",
       " Equity(137 [DLTR]),\n",
       " Equity(138 [DOV]),\n",
       " Equity(139 [DPS]),\n",
       " Equity(140 [DRE]),\n",
       " Equity(141 [DRI]),\n",
       " Equity(142 [DTE]),\n",
       " Equity(143 [DUK]),\n",
       " Equity(144 [DVA]),\n",
       " Equity(145 [DVN]),\n",
       " Equity(146 [EA]),\n",
       " Equity(147 [EBAY]),\n",
       " Equity(148 [ECL]),\n",
       " Equity(149 [ED]),\n",
       " Equity(150 [EFX]),\n",
       " Equity(151 [EIX]),\n",
       " Equity(152 [EL]),\n",
       " Equity(153 [EMN]),\n",
       " Equity(154 [EMR]),\n",
       " Equity(155 [EOG]),\n",
       " Equity(156 [EQIX]),\n",
       " Equity(157 [EQR]),\n",
       " Equity(158 [EQT]),\n",
       " Equity(159 [ES]),\n",
       " Equity(160 [ESRX]),\n",
       " Equity(161 [ESS]),\n",
       " Equity(162 [ETFC]),\n",
       " Equity(163 [ETN]),\n",
       " Equity(164 [ETR]),\n",
       " Equity(165 [EVHC]),\n",
       " Equity(166 [EW]),\n",
       " Equity(167 [EXC]),\n",
       " Equity(168 [EXPD]),\n",
       " Equity(169 [EXPE]),\n",
       " Equity(170 [EXR]),\n",
       " Equity(171 [F]),\n",
       " Equity(172 [FAST]),\n",
       " Equity(173 [FB]),\n",
       " Equity(174 [FBHS]),\n",
       " Equity(175 [FCX]),\n",
       " Equity(176 [FDX]),\n",
       " Equity(177 [FE]),\n",
       " Equity(178 [FFIV]),\n",
       " Equity(179 [FIS]),\n",
       " Equity(180 [FISV]),\n",
       " Equity(181 [FITB]),\n",
       " Equity(182 [FL]),\n",
       " Equity(183 [FLIR]),\n",
       " Equity(184 [FLR]),\n",
       " Equity(185 [FLS]),\n",
       " Equity(186 [FMC]),\n",
       " Equity(187 [FOX]),\n",
       " Equity(188 [FOXA]),\n",
       " Equity(189 [FRT]),\n",
       " Equity(190 [FTI]),\n",
       " Equity(191 [GD]),\n",
       " Equity(192 [GE]),\n",
       " Equity(193 [GGP]),\n",
       " Equity(194 [GILD]),\n",
       " Equity(195 [GIS]),\n",
       " Equity(196 [GLW]),\n",
       " Equity(197 [GM]),\n",
       " Equity(198 [GOOG]),\n",
       " Equity(199 [GOOGL]),\n",
       " Equity(200 [GPC]),\n",
       " Equity(201 [GPN]),\n",
       " Equity(202 [GPS]),\n",
       " Equity(203 [GRMN]),\n",
       " Equity(204 [GS]),\n",
       " Equity(205 [GT]),\n",
       " Equity(206 [GWW]),\n",
       " Equity(207 [HAL]),\n",
       " Equity(208 [HAS]),\n",
       " Equity(209 [HBAN]),\n",
       " Equity(210 [HBI]),\n",
       " Equity(211 [HCA]),\n",
       " Equity(212 [HCN]),\n",
       " Equity(213 [HCP]),\n",
       " Equity(214 [HD]),\n",
       " Equity(215 [HES]),\n",
       " Equity(216 [HIG]),\n",
       " Equity(217 [HLT]),\n",
       " Equity(218 [HOG]),\n",
       " Equity(219 [HOLX]),\n",
       " Equity(220 [HON]),\n",
       " Equity(221 [HP]),\n",
       " Equity(222 [HPE]),\n",
       " Equity(223 [HPQ]),\n",
       " Equity(224 [HRB]),\n",
       " Equity(225 [HRL]),\n",
       " Equity(226 [HRS]),\n",
       " Equity(227 [HSIC]),\n",
       " Equity(228 [HST]),\n",
       " Equity(229 [HSY]),\n",
       " Equity(230 [HUM]),\n",
       " Equity(231 [IBM]),\n",
       " Equity(232 [ICE]),\n",
       " Equity(233 [IDXX]),\n",
       " Equity(234 [IFF]),\n",
       " Equity(235 [ILMN]),\n",
       " Equity(236 [INCY]),\n",
       " Equity(237 [INFO]),\n",
       " Equity(238 [INTC]),\n",
       " Equity(239 [INTU]),\n",
       " Equity(240 [IP]),\n",
       " Equity(241 [IPG]),\n",
       " Equity(242 [IR]),\n",
       " Equity(243 [IRM]),\n",
       " Equity(244 [ISRG]),\n",
       " Equity(245 [IT]),\n",
       " Equity(246 [ITW]),\n",
       " Equity(247 [IVZ]),\n",
       " Equity(248 [JBHT]),\n",
       " Equity(249 [JCI]),\n",
       " Equity(250 [JEC]),\n",
       " Equity(251 [JNJ]),\n",
       " Equity(252 [JNPR]),\n",
       " Equity(253 [JPM]),\n",
       " Equity(254 [JWN]),\n",
       " Equity(255 [K]),\n",
       " Equity(256 [KEY]),\n",
       " Equity(257 [KHC]),\n",
       " Equity(258 [KIM]),\n",
       " Equity(259 [KLAC]),\n",
       " Equity(260 [KMB]),\n",
       " Equity(261 [KMI]),\n",
       " Equity(262 [KMX]),\n",
       " Equity(263 [KO]),\n",
       " Equity(264 [KORS]),\n",
       " Equity(265 [KR]),\n",
       " Equity(266 [KSS]),\n",
       " Equity(267 [KSU]),\n",
       " Equity(268 [L]),\n",
       " Equity(269 [LB]),\n",
       " Equity(270 [LEG]),\n",
       " Equity(271 [LEN]),\n",
       " Equity(272 [LH]),\n",
       " Equity(273 [LKQ]),\n",
       " Equity(274 [LLL]),\n",
       " Equity(275 [LLY]),\n",
       " Equity(276 [LMT]),\n",
       " Equity(277 [LNC]),\n",
       " Equity(278 [LNT]),\n",
       " Equity(279 [LOW]),\n",
       " Equity(280 [LRCX]),\n",
       " Equity(281 [LUK]),\n",
       " Equity(282 [LUV]),\n",
       " Equity(283 [LVLT]),\n",
       " Equity(284 [LYB]),\n",
       " Equity(285 [M]),\n",
       " Equity(286 [MA]),\n",
       " Equity(287 [MAA]),\n",
       " Equity(288 [MAC]),\n",
       " Equity(289 [MAR]),\n",
       " Equity(290 [MAS]),\n",
       " Equity(291 [MAT]),\n",
       " Equity(292 [MCD]),\n",
       " Equity(293 [MCHP]),\n",
       " Equity(294 [MCK]),\n",
       " Equity(295 [MCO]),\n",
       " Equity(296 [MDLZ]),\n",
       " Equity(297 [MDT]),\n",
       " Equity(298 [MET]),\n",
       " Equity(299 [MGM]),\n",
       " Equity(300 [MHK]),\n",
       " Equity(301 [MKC]),\n",
       " Equity(302 [MLM]),\n",
       " Equity(303 [MMC]),\n",
       " Equity(304 [MNST]),\n",
       " Equity(305 [MO]),\n",
       " Equity(306 [MON]),\n",
       " Equity(307 [MOS]),\n",
       " Equity(308 [MPC]),\n",
       " Equity(309 [MRK]),\n",
       " Equity(310 [MRO]),\n",
       " Equity(311 [MS]),\n",
       " Equity(312 [MSFT]),\n",
       " Equity(313 [MSI]),\n",
       " Equity(314 [MTB]),\n",
       " Equity(315 [MTD]),\n",
       " Equity(316 [MU]),\n",
       " Equity(317 [MYL]),\n",
       " Equity(318 [NAVI]),\n",
       " Equity(319 [NBL]),\n",
       " Equity(320 [NDAQ]),\n",
       " Equity(321 [NEE]),\n",
       " Equity(322 [NEM]),\n",
       " Equity(323 [NFLX]),\n",
       " Equity(324 [NFX]),\n",
       " Equity(325 [NI]),\n",
       " Equity(326 [NKE]),\n",
       " Equity(327 [NLSN]),\n",
       " Equity(328 [NOC]),\n",
       " Equity(329 [NOV]),\n",
       " Equity(330 [NRG]),\n",
       " Equity(331 [NSC]),\n",
       " Equity(332 [NTAP]),\n",
       " Equity(333 [NTRS]),\n",
       " Equity(334 [NUE]),\n",
       " Equity(335 [NVDA]),\n",
       " Equity(336 [NWL]),\n",
       " Equity(337 [NWS]),\n",
       " Equity(338 [NWSA]),\n",
       " Equity(339 [O]),\n",
       " Equity(340 [OKE]),\n",
       " Equity(341 [OMC]),\n",
       " Equity(342 [ORCL]),\n",
       " Equity(343 [ORLY]),\n",
       " Equity(344 [OXY]),\n",
       " Equity(345 [PAYX]),\n",
       " Equity(346 [PBCT]),\n",
       " Equity(347 [PCAR]),\n",
       " Equity(348 [PCG]),\n",
       " Equity(349 [PDCO]),\n",
       " Equity(350 [PEG]),\n",
       " Equity(351 [PEP]),\n",
       " Equity(352 [PFE]),\n",
       " Equity(353 [PFG]),\n",
       " Equity(354 [PG]),\n",
       " Equity(355 [PGR]),\n",
       " Equity(356 [PH]),\n",
       " Equity(357 [PHM]),\n",
       " Equity(358 [PKG]),\n",
       " Equity(359 [PKI]),\n",
       " Equity(360 [PLD]),\n",
       " Equity(361 [PM]),\n",
       " Equity(362 [PNC]),\n",
       " Equity(363 [PNR]),\n",
       " Equity(364 [PNW]),\n",
       " Equity(365 [PPG]),\n",
       " Equity(366 [PPL]),\n",
       " Equity(367 [PRGO]),\n",
       " Equity(368 [PRU]),\n",
       " Equity(369 [PSA]),\n",
       " Equity(370 [PSX]),\n",
       " Equity(371 [PVH]),\n",
       " Equity(372 [PWR]),\n",
       " Equity(373 [PX]),\n",
       " Equity(374 [PXD]),\n",
       " Equity(375 [PYPL]),\n",
       " Equity(376 [QCOM]),\n",
       " Equity(377 [QRVO]),\n",
       " Equity(378 [RCL]),\n",
       " Equity(379 [RE]),\n",
       " Equity(380 [REG]),\n",
       " Equity(381 [REGN]),\n",
       " Equity(382 [RF]),\n",
       " Equity(383 [RHI]),\n",
       " Equity(384 [RHT]),\n",
       " Equity(385 [RJF]),\n",
       " Equity(386 [RL]),\n",
       " Equity(387 [RMD]),\n",
       " Equity(388 [ROK]),\n",
       " Equity(389 [ROP]),\n",
       " Equity(390 [ROST]),\n",
       " Equity(391 [RRC]),\n",
       " Equity(392 [RSG]),\n",
       " Equity(393 [RTN]),\n",
       " Equity(394 [SBAC]),\n",
       " Equity(395 [SBUX]),\n",
       " Equity(396 [SCG]),\n",
       " Equity(397 [SCHW]),\n",
       " Equity(398 [SEE]),\n",
       " Equity(399 [SHW]),\n",
       " Equity(400 [SIG]),\n",
       " Equity(401 [SJM]),\n",
       " Equity(402 [SLB]),\n",
       " Equity(403 [SLG]),\n",
       " Equity(404 [SNA]),\n",
       " Equity(405 [SNI]),\n",
       " Equity(406 [SNPS]),\n",
       " Equity(407 [SO]),\n",
       " Equity(408 [SPG]),\n",
       " Equity(409 [SPLS]),\n",
       " Equity(410 [SRCL]),\n",
       " Equity(411 [SRE]),\n",
       " Equity(412 [STI]),\n",
       " Equity(413 [STT]),\n",
       " Equity(414 [STX]),\n",
       " Equity(415 [STZ]),\n",
       " Equity(416 [SWK]),\n",
       " Equity(417 [SWKS]),\n",
       " Equity(418 [SYF]),\n",
       " Equity(419 [SYK]),\n",
       " Equity(420 [SYMC]),\n",
       " Equity(421 [SYY]),\n",
       " Equity(422 [T]),\n",
       " Equity(423 [TAP]),\n",
       " Equity(424 [TDG]),\n",
       " Equity(425 [TEL]),\n",
       " Equity(426 [TGT]),\n",
       " Equity(427 [TIF]),\n",
       " Equity(428 [TJX]),\n",
       " Equity(429 [TMK]),\n",
       " Equity(430 [TMO]),\n",
       " Equity(431 [TRIP]),\n",
       " Equity(432 [TROW]),\n",
       " Equity(433 [TRV]),\n",
       " Equity(434 [TSCO]),\n",
       " Equity(435 [TSN]),\n",
       " Equity(436 [TSS]),\n",
       " Equity(437 [TWX]),\n",
       " Equity(438 [TXN]),\n",
       " Equity(439 [TXT]),\n",
       " Equity(440 [UAA]),\n",
       " Equity(441 [UAL]),\n",
       " Equity(442 [UDR]),\n",
       " Equity(443 [UHS]),\n",
       " Equity(444 [ULTA]),\n",
       " Equity(445 [UNH]),\n",
       " Equity(446 [UNM]),\n",
       " Equity(447 [UNP]),\n",
       " Equity(448 [UPS]),\n",
       " Equity(449 [URI]),\n",
       " Equity(450 [USB]),\n",
       " Equity(451 [UTX]),\n",
       " Equity(452 [V]),\n",
       " Equity(453 [VAR]),\n",
       " Equity(454 [VFC]),\n",
       " Equity(455 [VIAB]),\n",
       " Equity(456 [VLO]),\n",
       " Equity(457 [VMC]),\n",
       " Equity(458 [VNO]),\n",
       " Equity(459 [VRSK]),\n",
       " Equity(460 [VRSN]),\n",
       " Equity(461 [VRTX]),\n",
       " Equity(462 [VTR]),\n",
       " Equity(463 [VZ]),\n",
       " Equity(464 [WAT]),\n",
       " Equity(465 [WBA]),\n",
       " Equity(466 [WDC]),\n",
       " Equity(467 [WEC]),\n",
       " Equity(468 [WFC]),\n",
       " Equity(469 [WHR]),\n",
       " Equity(471 [WM]),\n",
       " Equity(472 [WMB]),\n",
       " Equity(473 [WMT]),\n",
       " Equity(474 [WRK]),\n",
       " Equity(475 [WU]),\n",
       " Equity(476 [WY]),\n",
       " Equity(477 [WYN]),\n",
       " Equity(478 [WYNN]),\n",
       " Equity(479 [XEC]),\n",
       " Equity(480 [XEL]),\n",
       " Equity(481 [XL]),\n",
       " Equity(482 [XLNX]),\n",
       " Equity(483 [XOM]),\n",
       " Equity(484 [XRAY]),\n",
       " Equity(485 [XRX]),\n",
       " Equity(486 [XYL]),\n",
       " Equity(487 [YUM]),\n",
       " Equity(488 [ZBH]),\n",
       " Equity(489 [ZION]),\n",
       " Equity(490 [ZTS])]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "universe_end_date = pd.Timestamp('2016-01-05', tz='UTC')\n",
    "\n",
    "universe_tickers = engine\\\n",
    "    .run_pipeline(\n",
    "        Pipeline(screen=universe),\n",
    "        universe_end_date,\n",
    "        universe_end_date)\\\n",
    "    .index.get_level_values(1)\\\n",
    "    .values.tolist()\n",
    "    \n",
    "universe_tickers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get Returns\n",
    "Not that we have our pipeline built, let's access the returns data. We'll start by building a data portal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from zipline.data.data_portal import DataPortal\n",
    "\n",
    "\n",
    "data_portal = DataPortal(\n",
    "    bundle_data.asset_finder,\n",
    "    trading_calendar=trading_calendar,\n",
    "    first_trading_day=bundle_data.equity_daily_bar_reader.first_trading_day,\n",
    "    equity_minute_reader=None,\n",
    "    equity_daily_reader=bundle_data.equity_daily_bar_reader,\n",
    "    adjustment_reader=bundle_data.adjustment_reader)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To make the code easier to read, we've built the helper function `get_pricing` to get the pricing from the data portal. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_pricing(data_portal, trading_calendar, assets, start_date, end_date, field='close'):\n",
    "    end_dt = pd.Timestamp(end_date.strftime('%Y-%m-%d'), tz='UTC', offset='C')\n",
    "    start_dt = pd.Timestamp(start_date.strftime('%Y-%m-%d'), tz='UTC', offset='C')\n",
    "\n",
    "    end_loc = trading_calendar.closes.index.get_loc(end_dt)\n",
    "    start_loc = trading_calendar.closes.index.get_loc(start_dt)\n",
    "\n",
    "    return data_portal.get_history_window(\n",
    "        assets=assets,\n",
    "        end_dt=end_dt,\n",
    "        bar_count=end_loc - start_loc,\n",
    "        frequency='1d',\n",
    "        field=field,\n",
    "        data_frequency='daily')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's get returns data for our risk model using the `get_pricing` function. For this model, we'll be looking back to 5 years of data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <th>...</th>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-01-07 00:00:00+00:00</th>\n",
       "      <td>0.00843652</td>\n",
       "      <td>0.01423027</td>\n",
       "      <td>0.02670202</td>\n",
       "      <td>0.00714639</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00199434</td>\n",
       "      <td>0.00416541</td>\n",
       "      <td>0.00164769</td>\n",
       "      <td>-0.00712736</td>\n",
       "      <td>-0.00581846</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00183775</td>\n",
       "      <td>-0.00561865</td>\n",
       "      <td>0.00546091</td>\n",
       "      <td>-0.00404361</td>\n",
       "      <td>-0.01395259</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01245693</td>\n",
       "      <td>-0.00018145</td>\n",
       "      <td>-0.01045802</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-10 00:00:00+00:00</th>\n",
       "      <td>-0.00417428</td>\n",
       "      <td>0.00619534</td>\n",
       "      <td>0.00743543</td>\n",
       "      <td>0.01885158</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00571429</td>\n",
       "      <td>-0.00889600</td>\n",
       "      <td>-0.00885384</td>\n",
       "      <td>0.02871411</td>\n",
       "      <td>0.00292626</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00094687</td>\n",
       "      <td>0.00781438</td>\n",
       "      <td>-0.00608100</td>\n",
       "      <td>0.01046585</td>\n",
       "      <td>0.00973303</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00143979</td>\n",
       "      <td>0.00778351</td>\n",
       "      <td>-0.01794496</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-11 00:00:00+00:00</th>\n",
       "      <td>-0.00188630</td>\n",
       "      <td>-0.04364361</td>\n",
       "      <td>-0.00592730</td>\n",
       "      <td>-0.00236744</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00978303</td>\n",
       "      <td>-0.00206747</td>\n",
       "      <td>0.01371668</td>\n",
       "      <td>0.00060680</td>\n",
       "      <td>0.00875316</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00131385</td>\n",
       "      <td>0.01017933</td>\n",
       "      <td>0.00744242</td>\n",
       "      <td>0.00735141</td>\n",
       "      <td>0.00611644</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00646974</td>\n",
       "      <td>0.03567570</td>\n",
       "      <td>0.00746728</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-12 00:00:00+00:00</th>\n",
       "      <td>0.01725375</td>\n",
       "      <td>-0.00823708</td>\n",
       "      <td>0.01338721</td>\n",
       "      <td>0.00813289</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00597922</td>\n",
       "      <td>-0.00101061</td>\n",
       "      <td>0.02296913</td>\n",
       "      <td>0.01795027</td>\n",
       "      <td>0.00025710</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00498609</td>\n",
       "      <td>0.01566621</td>\n",
       "      <td>0.01176334</td>\n",
       "      <td>0.02718194</td>\n",
       "      <td>0.00438630</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00263106</td>\n",
       "      <td>0.01474083</td>\n",
       "      <td>-0.01190269</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-13 00:00:00+00:00</th>\n",
       "      <td>-0.00455851</td>\n",
       "      <td>0.00095465</td>\n",
       "      <td>0.00303109</td>\n",
       "      <td>0.00365656</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01492537</td>\n",
       "      <td>-0.00445119</td>\n",
       "      <td>-0.00040011</td>\n",
       "      <td>-0.00571905</td>\n",
       "      <td>-0.00501221</td>\n",
       "      <td>...</td>\n",
       "      <td>0.03049927</td>\n",
       "      <td>-0.00321668</td>\n",
       "      <td>0.00169383</td>\n",
       "      <td>0.00054651</td>\n",
       "      <td>-0.01823475</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00508430</td>\n",
       "      <td>-0.00466453</td>\n",
       "      <td>-0.00917796</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-14 00:00:00+00:00</th>\n",
       "      <td>0.00343886</td>\n",
       "      <td>-0.00915594</td>\n",
       "      <td>0.00302193</td>\n",
       "      <td>0.00810620</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00139452</td>\n",
       "      <td>-0.01011076</td>\n",
       "      <td>0.00259000</td>\n",
       "      <td>0.01228280</td>\n",
       "      <td>0.01982692</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02660653</td>\n",
       "      <td>0.02589425</td>\n",
       "      <td>0.01474258</td>\n",
       "      <td>-0.00028748</td>\n",
       "      <td>0.02649446</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.02166101</td>\n",
       "      <td>0.00594885</td>\n",
       "      <td>0.03317747</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-18 00:00:00+00:00</th>\n",
       "      <td>0.03425353</td>\n",
       "      <td>-0.06208490</td>\n",
       "      <td>-0.00428562</td>\n",
       "      <td>-0.02247419</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02088872</td>\n",
       "      <td>0.00662116</td>\n",
       "      <td>0.00699843</td>\n",
       "      <td>0.01154188</td>\n",
       "      <td>0.03264518</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00167843</td>\n",
       "      <td>0.00250133</td>\n",
       "      <td>0.01116324</td>\n",
       "      <td>0.01158879</td>\n",
       "      <td>0.00604402</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02945339</td>\n",
       "      <td>0.00699753</td>\n",
       "      <td>-0.00853448</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-19 00:00:00+00:00</th>\n",
       "      <td>-0.01022379</td>\n",
       "      <td>-0.00892857</td>\n",
       "      <td>0.00875376</td>\n",
       "      <td>-0.00531448</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.01714410</td>\n",
       "      <td>0.00275342</td>\n",
       "      <td>-0.00296182</td>\n",
       "      <td>-0.00789936</td>\n",
       "      <td>-0.02057462</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01483416</td>\n",
       "      <td>-0.02358990</td>\n",
       "      <td>-0.00596800</td>\n",
       "      <td>-0.01989880</td>\n",
       "      <td>-0.01284667</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00081838</td>\n",
       "      <td>-0.00409759</td>\n",
       "      <td>-0.01843318</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-20 00:00:00+00:00</th>\n",
       "      <td>-0.00849568</td>\n",
       "      <td>0.02195299</td>\n",
       "      <td>-0.00473189</td>\n",
       "      <td>-0.01818900</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00479450</td>\n",
       "      <td>0.01332249</td>\n",
       "      <td>0.01871257</td>\n",
       "      <td>-0.01238573</td>\n",
       "      <td>-0.00281761</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.02451226</td>\n",
       "      <td>0.00774353</td>\n",
       "      <td>-0.00626137</td>\n",
       "      <td>-0.00084112</td>\n",
       "      <td>-0.03379775</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.01318157</td>\n",
       "      <td>-0.00161165</td>\n",
       "      <td>-0.00797236</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-21 00:00:00+00:00</th>\n",
       "      <td>0.00787281</td>\n",
       "      <td>-0.04103759</td>\n",
       "      <td>0.00554409</td>\n",
       "      <td>-0.01791080</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01064197</td>\n",
       "      <td>-0.00085307</td>\n",
       "      <td>-0.00195169</td>\n",
       "      <td>-0.00656913</td>\n",
       "      <td>-0.00411277</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00061472</td>\n",
       "      <td>0.01582494</td>\n",
       "      <td>-0.00304798</td>\n",
       "      <td>-0.00087153</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00759032</td>\n",
       "      <td>0.00932467</td>\n",
       "      <td>0.02402000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-24 00:00:00+00:00</th>\n",
       "      <td>0.01464622</td>\n",
       "      <td>0.02747253</td>\n",
       "      <td>-0.00110591</td>\n",
       "      <td>0.03283704</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00524943</td>\n",
       "      <td>0.00522324</td>\n",
       "      <td>0.00842018</td>\n",
       "      <td>0.02284340</td>\n",
       "      <td>0.01497431</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01235897</td>\n",
       "      <td>0.01601137</td>\n",
       "      <td>-0.00494300</td>\n",
       "      <td>0.00165968</td>\n",
       "      <td>0.00804885</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00060118</td>\n",
       "      <td>-0.01650140</td>\n",
       "      <td>-0.02302058</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-25 00:00:00+00:00</th>\n",
       "      <td>-0.00673624</td>\n",
       "      <td>0.00298231</td>\n",
       "      <td>0.00914590</td>\n",
       "      <td>0.01170955</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00936254</td>\n",
       "      <td>-0.00434674</td>\n",
       "      <td>0.00485935</td>\n",
       "      <td>-0.01381134</td>\n",
       "      <td>-0.01450491</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00217821</td>\n",
       "      <td>0.00627338</td>\n",
       "      <td>0.00115375</td>\n",
       "      <td>0.00113369</td>\n",
       "      <td>0.01514317</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00620848</td>\n",
       "      <td>0.01714176</td>\n",
       "      <td>-0.00883613</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-26 00:00:00+00:00</th>\n",
       "      <td>-0.03073582</td>\n",
       "      <td>0.06613350</td>\n",
       "      <td>0.00359340</td>\n",
       "      <td>0.00719342</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01222707</td>\n",
       "      <td>-0.02524087</td>\n",
       "      <td>0.01219180</td>\n",
       "      <td>-0.00119190</td>\n",
       "      <td>0.00283652</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00262839</td>\n",
       "      <td>0.00593383</td>\n",
       "      <td>0.01245258</td>\n",
       "      <td>0.00055168</td>\n",
       "      <td>-0.07629122</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00480301</td>\n",
       "      <td>-0.01952376</td>\n",
       "      <td>-0.01062584</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-27 00:00:00+00:00</th>\n",
       "      <td>0.00772081</td>\n",
       "      <td>0.02317753</td>\n",
       "      <td>-0.00155262</td>\n",
       "      <td>-0.00187707</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01183286</td>\n",
       "      <td>-0.00792793</td>\n",
       "      <td>0.00017944</td>\n",
       "      <td>0.00984487</td>\n",
       "      <td>0.00747981</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01426699</td>\n",
       "      <td>0.02116856</td>\n",
       "      <td>0.00275077</td>\n",
       "      <td>0.01639630</td>\n",
       "      <td>0.02466443</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00374620</td>\n",
       "      <td>0.06875384</td>\n",
       "      <td>0.02016019</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-28 00:00:00+00:00</th>\n",
       "      <td>-0.01884631</td>\n",
       "      <td>-0.08055268</td>\n",
       "      <td>-0.00093620</td>\n",
       "      <td>-0.02070958</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.02226215</td>\n",
       "      <td>-0.01919983</td>\n",
       "      <td>-0.01603463</td>\n",
       "      <td>-0.04017725</td>\n",
       "      <td>-0.02245999</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.02564740</td>\n",
       "      <td>-0.02010822</td>\n",
       "      <td>-0.01113056</td>\n",
       "      <td>-0.02187072</td>\n",
       "      <td>-0.02222859</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.02500085</td>\n",
       "      <td>-0.00847214</td>\n",
       "      <td>-0.01387340</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-31 00:00:00+00:00</th>\n",
       "      <td>0.00360809</td>\n",
       "      <td>-0.02361480</td>\n",
       "      <td>-0.00235062</td>\n",
       "      <td>0.00957845</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00389347</td>\n",
       "      <td>-0.00724829</td>\n",
       "      <td>-0.00098003</td>\n",
       "      <td>0.01723607</td>\n",
       "      <td>0.01381753</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00484620</td>\n",
       "      <td>0.00029849</td>\n",
       "      <td>0.02139566</td>\n",
       "      <td>-0.00756028</td>\n",
       "      <td>0.00661503</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00774817</td>\n",
       "      <td>0.00990224</td>\n",
       "      <td>0.00637836</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-01 00:00:00+00:00</th>\n",
       "      <td>0.01165376</td>\n",
       "      <td>-0.00104701</td>\n",
       "      <td>-0.00921769</td>\n",
       "      <td>0.01681783</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01197624</td>\n",
       "      <td>0.00154551</td>\n",
       "      <td>0.01749823</td>\n",
       "      <td>0.01391831</td>\n",
       "      <td>0.02162417</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01568687</td>\n",
       "      <td>0.03200298</td>\n",
       "      <td>0.04003746</td>\n",
       "      <td>0.02479485</td>\n",
       "      <td>0.02449777</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01410150</td>\n",
       "      <td>0.01774607</td>\n",
       "      <td>0.03097047</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-02 00:00:00+00:00</th>\n",
       "      <td>0.01011176</td>\n",
       "      <td>-0.03930406</td>\n",
       "      <td>-0.02747650</td>\n",
       "      <td>-0.00205320</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.02119705</td>\n",
       "      <td>0.01106795</td>\n",
       "      <td>0.00363229</td>\n",
       "      <td>-0.00238735</td>\n",
       "      <td>0.00227994</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01284550</td>\n",
       "      <td>-0.00451785</td>\n",
       "      <td>-0.00595828</td>\n",
       "      <td>-0.01038976</td>\n",
       "      <td>-0.00182689</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00656172</td>\n",
       "      <td>0.00516054</td>\n",
       "      <td>-0.00370596</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-03 00:00:00+00:00</th>\n",
       "      <td>-0.00028893</td>\n",
       "      <td>0.00730962</td>\n",
       "      <td>0.01412639</td>\n",
       "      <td>-0.00256035</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00366196</td>\n",
       "      <td>0.00589443</td>\n",
       "      <td>0.00417765</td>\n",
       "      <td>0.00299133</td>\n",
       "      <td>-0.01334112</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01043038</td>\n",
       "      <td>-0.00816904</td>\n",
       "      <td>0.00034726</td>\n",
       "      <td>0.00855568</td>\n",
       "      <td>0.00459592</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.03141255</td>\n",
       "      <td>-0.00033292</td>\n",
       "      <td>-0.00039386</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-04 00:00:00+00:00</th>\n",
       "      <td>0.00562724</td>\n",
       "      <td>-0.03649951</td>\n",
       "      <td>0.02401434</td>\n",
       "      <td>0.00891547</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.03304712</td>\n",
       "      <td>0.00261602</td>\n",
       "      <td>-0.00436050</td>\n",
       "      <td>-0.00507009</td>\n",
       "      <td>0.01965916</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00947084</td>\n",
       "      <td>0.02470898</td>\n",
       "      <td>-0.00191681</td>\n",
       "      <td>0.00304817</td>\n",
       "      <td>-0.00550607</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00140817</td>\n",
       "      <td>0.00247147</td>\n",
       "      <td>0.01611067</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-07 00:00:00+00:00</th>\n",
       "      <td>0.00770895</td>\n",
       "      <td>0.05204586</td>\n",
       "      <td>0.00811404</td>\n",
       "      <td>0.01553804</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00217765</td>\n",
       "      <td>-0.00934092</td>\n",
       "      <td>0.00227918</td>\n",
       "      <td>0.00599520</td>\n",
       "      <td>-0.00351381</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00680069</td>\n",
       "      <td>-0.00507270</td>\n",
       "      <td>0.00780293</td>\n",
       "      <td>0.00685187</td>\n",
       "      <td>0.00276828</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00202754</td>\n",
       "      <td>-0.01087565</td>\n",
       "      <td>0.02761741</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-08 00:00:00+00:00</th>\n",
       "      <td>0.01085425</td>\n",
       "      <td>0.01645475</td>\n",
       "      <td>0.00620226</td>\n",
       "      <td>0.00943966</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00218240</td>\n",
       "      <td>-0.00173831</td>\n",
       "      <td>-0.00055735</td>\n",
       "      <td>0.00029797</td>\n",
       "      <td>-0.00600987</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00384577</td>\n",
       "      <td>0.00179527</td>\n",
       "      <td>-0.00607698</td>\n",
       "      <td>0.00518223</td>\n",
       "      <td>-0.00276064</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00385105</td>\n",
       "      <td>-0.00049496</td>\n",
       "      <td>0.00477967</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-09 00:00:00+00:00</th>\n",
       "      <td>0.00466351</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01695500</td>\n",
       "      <td>0.00833204</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00300577</td>\n",
       "      <td>-0.00153026</td>\n",
       "      <td>0.00113763</td>\n",
       "      <td>-0.01668156</td>\n",
       "      <td>0.00478144</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01183694</td>\n",
       "      <td>-0.00179205</td>\n",
       "      <td>-0.00517814</td>\n",
       "      <td>-0.01844088</td>\n",
       "      <td>0.00370461</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00182061</td>\n",
       "      <td>-0.00985108</td>\n",
       "      <td>-0.00475694</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-10 00:00:00+00:00</th>\n",
       "      <td>0.00041298</td>\n",
       "      <td>-0.00304846</td>\n",
       "      <td>-0.01136679</td>\n",
       "      <td>-0.01010922</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00110085</td>\n",
       "      <td>-0.00110982</td>\n",
       "      <td>0.00550344</td>\n",
       "      <td>0.01696456</td>\n",
       "      <td>0.00451308</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00894677</td>\n",
       "      <td>0.00391368</td>\n",
       "      <td>0.00787593</td>\n",
       "      <td>0.00551211</td>\n",
       "      <td>-0.00462381</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00485295</td>\n",
       "      <td>0.01144950</td>\n",
       "      <td>-0.02649784</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-11 00:00:00+00:00</th>\n",
       "      <td>-0.00714982</td>\n",
       "      <td>0.02836356</td>\n",
       "      <td>0.00076442</td>\n",
       "      <td>0.00650490</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00137455</td>\n",
       "      <td>0.00153431</td>\n",
       "      <td>-0.01114607</td>\n",
       "      <td>0.00297885</td>\n",
       "      <td>0.01500657</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00170520</td>\n",
       "      <td>0.01076538</td>\n",
       "      <td>-0.00456215</td>\n",
       "      <td>0.00714655</td>\n",
       "      <td>0.01202070</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00061584</td>\n",
       "      <td>0.00965987</td>\n",
       "      <td>0.01425557</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-14 00:00:00+00:00</th>\n",
       "      <td>0.00166312</td>\n",
       "      <td>-0.01579001</td>\n",
       "      <td>-0.02327358</td>\n",
       "      <td>0.00652903</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00575047</td>\n",
       "      <td>0.00924459</td>\n",
       "      <td>0.00020168</td>\n",
       "      <td>0.00564301</td>\n",
       "      <td>0.00987654</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01161568</td>\n",
       "      <td>0.00031846</td>\n",
       "      <td>0.02522953</td>\n",
       "      <td>-0.00544299</td>\n",
       "      <td>0.00547592</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01065725</td>\n",
       "      <td>0.00248369</td>\n",
       "      <td>-0.01002123</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-15 00:00:00+00:00</th>\n",
       "      <td>-0.01190476</td>\n",
       "      <td>0.01104282</td>\n",
       "      <td>-0.00392614</td>\n",
       "      <td>0.00201613</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00732946</td>\n",
       "      <td>0.01674954</td>\n",
       "      <td>-0.00802079</td>\n",
       "      <td>0.00236267</td>\n",
       "      <td>0.00023854</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00607872</td>\n",
       "      <td>-0.00180403</td>\n",
       "      <td>-0.02285301</td>\n",
       "      <td>0.00409742</td>\n",
       "      <td>0.00360404</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00852564</td>\n",
       "      <td>-0.00181453</td>\n",
       "      <td>-0.00446084</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-16 00:00:00+00:00</th>\n",
       "      <td>0.01512325</td>\n",
       "      <td>0.00195775</td>\n",
       "      <td>0.01385974</td>\n",
       "      <td>0.00896684</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00355392</td>\n",
       "      <td>-0.01050193</td>\n",
       "      <td>0.02732858</td>\n",
       "      <td>0.02209782</td>\n",
       "      <td>-0.00390509</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00917384</td>\n",
       "      <td>0.00386265</td>\n",
       "      <td>0.00868160</td>\n",
       "      <td>0.00028536</td>\n",
       "      <td>0.02709281</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00889849</td>\n",
       "      <td>0.01055741</td>\n",
       "      <td>0.00120638</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-17 00:00:00+00:00</th>\n",
       "      <td>-0.00331066</td>\n",
       "      <td>-0.01779103</td>\n",
       "      <td>-0.02484354</td>\n",
       "      <td>-0.01330906</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02914771</td>\n",
       "      <td>0.00130066</td>\n",
       "      <td>0.01178385</td>\n",
       "      <td>0.00835976</td>\n",
       "      <td>0.00855903</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01565577</td>\n",
       "      <td>0.00031771</td>\n",
       "      <td>0.00227521</td>\n",
       "      <td>-0.00191139</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00390600</td>\n",
       "      <td>0.01532474</td>\n",
       "      <td>-0.00322747</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-02-18 00:00:00+00:00</th>\n",
       "      <td>0.01107771</td>\n",
       "      <td>-0.02010261</td>\n",
       "      <td>-0.00669325</td>\n",
       "      <td>-0.02159490</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00961998</td>\n",
       "      <td>0.01210641</td>\n",
       "      <td>-0.00795272</td>\n",
       "      <td>0.01172098</td>\n",
       "      <td>-0.00169134</td>\n",
       "      <td>...</td>\n",
       "      <td>0.05340361</td>\n",
       "      <td>0.00144687</td>\n",
       "      <td>0.00739258</td>\n",
       "      <td>0.01314812</td>\n",
       "      <td>-0.00438988</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00411045</td>\n",
       "      <td>0.02378154</td>\n",
       "      <td>-0.01795968</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-11-20 00:00:00+00:00</th>\n",
       "      <td>0.00107212</td>\n",
       "      <td>-0.00237346</td>\n",
       "      <td>0.00276686</td>\n",
       "      <td>0.00438086</td>\n",
       "      <td>0.00925624</td>\n",
       "      <td>-0.00090483</td>\n",
       "      <td>0.00611281</td>\n",
       "      <td>0.00643014</td>\n",
       "      <td>0.00054490</td>\n",
       "      <td>-0.00584294</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00813121</td>\n",
       "      <td>0.00041182</td>\n",
       "      <td>-0.00635194</td>\n",
       "      <td>0.00279330</td>\n",
       "      <td>0.00289932</td>\n",
       "      <td>-0.00449783</td>\n",
       "      <td>0.01505987</td>\n",
       "      <td>-0.00317570</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00894971</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-11-23 00:00:00+00:00</th>\n",
       "      <td>-0.00709429</td>\n",
       "      <td>0.00237910</td>\n",
       "      <td>-0.00122838</td>\n",
       "      <td>-0.01298872</td>\n",
       "      <td>0.00064612</td>\n",
       "      <td>-0.00372792</td>\n",
       "      <td>-0.01238148</td>\n",
       "      <td>-0.00120585</td>\n",
       "      <td>0.00163381</td>\n",
       "      <td>-0.04410655</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00469574</td>\n",
       "      <td>-0.00695468</td>\n",
       "      <td>0.00613134</td>\n",
       "      <td>0.00734514</td>\n",
       "      <td>0.02769219</td>\n",
       "      <td>0.00132239</td>\n",
       "      <td>-0.00096628</td>\n",
       "      <td>-0.00858098</td>\n",
       "      <td>-0.00199203</td>\n",
       "      <td>-0.00760006</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-11-24 00:00:00+00:00</th>\n",
       "      <td>0.00208486</td>\n",
       "      <td>-0.02530879</td>\n",
       "      <td>0.00350426</td>\n",
       "      <td>0.00959410</td>\n",
       "      <td>-0.00032285</td>\n",
       "      <td>-0.00233603</td>\n",
       "      <td>0.00020972</td>\n",
       "      <td>-0.00453713</td>\n",
       "      <td>0.00043497</td>\n",
       "      <td>0.06374097</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00077707</td>\n",
       "      <td>0.01295953</td>\n",
       "      <td>0.01993523</td>\n",
       "      <td>-0.00956300</td>\n",
       "      <td>-0.01299182</td>\n",
       "      <td>-0.00187091</td>\n",
       "      <td>-0.00425172</td>\n",
       "      <td>-0.00904325</td>\n",
       "      <td>0.00264987</td>\n",
       "      <td>-0.00065084</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-11-25 00:00:00+00:00</th>\n",
       "      <td>-0.00820649</td>\n",
       "      <td>0.00193813</td>\n",
       "      <td>0.00680544</td>\n",
       "      <td>-0.00715141</td>\n",
       "      <td>-0.01374361</td>\n",
       "      <td>0.00436515</td>\n",
       "      <td>-0.00086201</td>\n",
       "      <td>-0.00233759</td>\n",
       "      <td>-0.00250000</td>\n",
       "      <td>-0.00281048</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00888765</td>\n",
       "      <td>-0.00445842</td>\n",
       "      <td>-0.00768963</td>\n",
       "      <td>-0.00279190</td>\n",
       "      <td>-0.00191255</td>\n",
       "      <td>0.00482386</td>\n",
       "      <td>0.00289380</td>\n",
       "      <td>-0.00617420</td>\n",
       "      <td>-0.00030891</td>\n",
       "      <td>0.00086836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-11-27 00:00:00+00:00</th>\n",
       "      <td>-0.00325586</td>\n",
       "      <td>0.00920070</td>\n",
       "      <td>0.00328491</td>\n",
       "      <td>-0.00186283</td>\n",
       "      <td>-0.00480271</td>\n",
       "      <td>0.00061184</td>\n",
       "      <td>0.00020986</td>\n",
       "      <td>0.00336265</td>\n",
       "      <td>0.00435872</td>\n",
       "      <td>0.00331472</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00473588</td>\n",
       "      <td>0.00447839</td>\n",
       "      <td>-0.00025651</td>\n",
       "      <td>0.00263307</td>\n",
       "      <td>0.00379485</td>\n",
       "      <td>-0.00213974</td>\n",
       "      <td>0.00510503</td>\n",
       "      <td>-0.00286889</td>\n",
       "      <td>0.00501270</td>\n",
       "      <td>0.00234253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-11-30 00:00:00+00:00</th>\n",
       "      <td>-0.01020870</td>\n",
       "      <td>-0.01032093</td>\n",
       "      <td>-0.01279784</td>\n",
       "      <td>0.00415919</td>\n",
       "      <td>-0.03083813</td>\n",
       "      <td>-0.00354229</td>\n",
       "      <td>-0.01100361</td>\n",
       "      <td>-0.00222774</td>\n",
       "      <td>-0.00770316</td>\n",
       "      <td>0.01952228</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00421152</td>\n",
       "      <td>0.00934761</td>\n",
       "      <td>0.00529351</td>\n",
       "      <td>-0.00736321</td>\n",
       "      <td>-0.00752358</td>\n",
       "      <td>-0.00692784</td>\n",
       "      <td>-0.00618325</td>\n",
       "      <td>0.00010131</td>\n",
       "      <td>-0.00433862</td>\n",
       "      <td>-0.00807150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-01 00:00:00+00:00</th>\n",
       "      <td>0.01574786</td>\n",
       "      <td>0.04849282</td>\n",
       "      <td>-0.00239635</td>\n",
       "      <td>-0.00811576</td>\n",
       "      <td>0.01495718</td>\n",
       "      <td>0.00871792</td>\n",
       "      <td>0.01202178</td>\n",
       "      <td>0.00848039</td>\n",
       "      <td>0.01191778</td>\n",
       "      <td>-0.00097042</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01519233</td>\n",
       "      <td>0.01107484</td>\n",
       "      <td>0.00282087</td>\n",
       "      <td>0.02160044</td>\n",
       "      <td>0.01327550</td>\n",
       "      <td>0.00858179</td>\n",
       "      <td>0.02716952</td>\n",
       "      <td>0.01692683</td>\n",
       "      <td>0.01502831</td>\n",
       "      <td>0.00663191</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-02 00:00:00+00:00</th>\n",
       "      <td>-0.00528420</td>\n",
       "      <td>0.01293012</td>\n",
       "      <td>-0.02716607</td>\n",
       "      <td>-0.00902983</td>\n",
       "      <td>-0.02202152</td>\n",
       "      <td>-0.00653437</td>\n",
       "      <td>-0.00528731</td>\n",
       "      <td>-0.00499107</td>\n",
       "      <td>-0.00572663</td>\n",
       "      <td>-0.00699034</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00385752</td>\n",
       "      <td>-0.02469292</td>\n",
       "      <td>-0.02857143</td>\n",
       "      <td>0.00757240</td>\n",
       "      <td>-0.02996241</td>\n",
       "      <td>-0.01833503</td>\n",
       "      <td>0.00631281</td>\n",
       "      <td>-0.00447256</td>\n",
       "      <td>-0.01544806</td>\n",
       "      <td>-0.01360986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-03 00:00:00+00:00</th>\n",
       "      <td>-0.00952117</td>\n",
       "      <td>-0.01255465</td>\n",
       "      <td>-0.01994438</td>\n",
       "      <td>-0.00929219</td>\n",
       "      <td>-0.02772394</td>\n",
       "      <td>-0.00141471</td>\n",
       "      <td>-0.02365007</td>\n",
       "      <td>-0.01542891</td>\n",
       "      <td>-0.02292980</td>\n",
       "      <td>-0.02782630</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00829420</td>\n",
       "      <td>-0.01081970</td>\n",
       "      <td>-0.01432669</td>\n",
       "      <td>0.00273291</td>\n",
       "      <td>-0.00095925</td>\n",
       "      <td>-0.00567594</td>\n",
       "      <td>-0.02427203</td>\n",
       "      <td>-0.02836674</td>\n",
       "      <td>-0.01572478</td>\n",
       "      <td>-0.02524442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-04 00:00:00+00:00</th>\n",
       "      <td>0.02019919</td>\n",
       "      <td>0.03930296</td>\n",
       "      <td>0.00677909</td>\n",
       "      <td>0.03324578</td>\n",
       "      <td>0.01889890</td>\n",
       "      <td>0.01195750</td>\n",
       "      <td>0.02604566</td>\n",
       "      <td>0.02992398</td>\n",
       "      <td>0.02969636</td>\n",
       "      <td>0.00271314</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02221053</td>\n",
       "      <td>0.01032552</td>\n",
       "      <td>0.00573563</td>\n",
       "      <td>0.00749501</td>\n",
       "      <td>0.01159888</td>\n",
       "      <td>0.02477363</td>\n",
       "      <td>0.04115927</td>\n",
       "      <td>0.01197660</td>\n",
       "      <td>0.02445235</td>\n",
       "      <td>0.02788171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-07 00:00:00+00:00</th>\n",
       "      <td>-0.00033987</td>\n",
       "      <td>0.01801987</td>\n",
       "      <td>-0.02957813</td>\n",
       "      <td>-0.00629799</td>\n",
       "      <td>-0.01592051</td>\n",
       "      <td>0.00089849</td>\n",
       "      <td>0.00572671</td>\n",
       "      <td>-0.00146283</td>\n",
       "      <td>-0.03218838</td>\n",
       "      <td>-0.01198796</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00879092</td>\n",
       "      <td>-0.02612215</td>\n",
       "      <td>-0.00190007</td>\n",
       "      <td>-0.02957591</td>\n",
       "      <td>-0.01964712</td>\n",
       "      <td>0.00353962</td>\n",
       "      <td>-0.00138396</td>\n",
       "      <td>-0.04208519</td>\n",
       "      <td>-0.01184133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-08 00:00:00+00:00</th>\n",
       "      <td>-0.02330712</td>\n",
       "      <td>-0.02687583</td>\n",
       "      <td>-0.00886608</td>\n",
       "      <td>-0.00042489</td>\n",
       "      <td>0.00711446</td>\n",
       "      <td>0.00490595</td>\n",
       "      <td>-0.00020917</td>\n",
       "      <td>-0.00027950</td>\n",
       "      <td>0.02366071</td>\n",
       "      <td>-0.00821590</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00460567</td>\n",
       "      <td>-0.00391018</td>\n",
       "      <td>-0.02825109</td>\n",
       "      <td>-0.01206744</td>\n",
       "      <td>-0.00492958</td>\n",
       "      <td>-0.01707392</td>\n",
       "      <td>-0.01073476</td>\n",
       "      <td>-0.00627720</td>\n",
       "      <td>-0.03181317</td>\n",
       "      <td>0.00066573</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-09 00:00:00+00:00</th>\n",
       "      <td>-0.00516964</td>\n",
       "      <td>-0.02021340</td>\n",
       "      <td>0.02222267</td>\n",
       "      <td>-0.02207699</td>\n",
       "      <td>-0.01130272</td>\n",
       "      <td>0.00198396</td>\n",
       "      <td>-0.01294807</td>\n",
       "      <td>-0.01487559</td>\n",
       "      <td>-0.02354993</td>\n",
       "      <td>-0.02360837</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01309164</td>\n",
       "      <td>-0.00993443</td>\n",
       "      <td>0.01338977</td>\n",
       "      <td>-0.02106570</td>\n",
       "      <td>-0.00986868</td>\n",
       "      <td>-0.00056952</td>\n",
       "      <td>-0.02367896</td>\n",
       "      <td>0.00220474</td>\n",
       "      <td>-0.00748954</td>\n",
       "      <td>-0.01590047</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-10 00:00:00+00:00</th>\n",
       "      <td>0.01503860</td>\n",
       "      <td>0.01009224</td>\n",
       "      <td>-0.00946596</td>\n",
       "      <td>0.00476320</td>\n",
       "      <td>-0.00446315</td>\n",
       "      <td>0.01271990</td>\n",
       "      <td>0.00777184</td>\n",
       "      <td>0.00289674</td>\n",
       "      <td>-0.00669942</td>\n",
       "      <td>0.00882138</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00675676</td>\n",
       "      <td>0.00188278</td>\n",
       "      <td>0.00079770</td>\n",
       "      <td>-0.00031695</td>\n",
       "      <td>0.01497042</td>\n",
       "      <td>0.01213779</td>\n",
       "      <td>-0.00825643</td>\n",
       "      <td>-0.00029673</td>\n",
       "      <td>0.01475919</td>\n",
       "      <td>0.01969533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-11 00:00:00+00:00</th>\n",
       "      <td>-0.01222670</td>\n",
       "      <td>-0.04535632</td>\n",
       "      <td>-0.01917906</td>\n",
       "      <td>-0.02573993</td>\n",
       "      <td>-0.03118548</td>\n",
       "      <td>0.00127956</td>\n",
       "      <td>-0.02096235</td>\n",
       "      <td>-0.02137978</td>\n",
       "      <td>0.02765288</td>\n",
       "      <td>-0.00384301</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01493822</td>\n",
       "      <td>-0.01271252</td>\n",
       "      <td>-0.01783980</td>\n",
       "      <td>-0.01775464</td>\n",
       "      <td>-0.01279343</td>\n",
       "      <td>-0.01306196</td>\n",
       "      <td>-0.02583602</td>\n",
       "      <td>-0.01011228</td>\n",
       "      <td>-0.02978165</td>\n",
       "      <td>-0.00585635</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-14 00:00:00+00:00</th>\n",
       "      <td>-0.01119741</td>\n",
       "      <td>-0.00761835</td>\n",
       "      <td>-0.00832534</td>\n",
       "      <td>-0.00618871</td>\n",
       "      <td>0.02589759</td>\n",
       "      <td>0.00440628</td>\n",
       "      <td>0.01014465</td>\n",
       "      <td>0.01007090</td>\n",
       "      <td>0.02012689</td>\n",
       "      <td>-0.00193824</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00721594</td>\n",
       "      <td>-0.00094052</td>\n",
       "      <td>0.02273800</td>\n",
       "      <td>-0.00183474</td>\n",
       "      <td>-0.01791305</td>\n",
       "      <td>0.01158048</td>\n",
       "      <td>0.00490982</td>\n",
       "      <td>0.00535594</td>\n",
       "      <td>-0.01499098</td>\n",
       "      <td>0.01658331</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-15 00:00:00+00:00</th>\n",
       "      <td>0.02468348</td>\n",
       "      <td>0.01976847</td>\n",
       "      <td>0.05799045</td>\n",
       "      <td>-0.01768577</td>\n",
       "      <td>0.01713257</td>\n",
       "      <td>-0.00819372</td>\n",
       "      <td>0.01741535</td>\n",
       "      <td>0.00338602</td>\n",
       "      <td>0.00814926</td>\n",
       "      <td>-0.00474296</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01539193</td>\n",
       "      <td>0.01351594</td>\n",
       "      <td>0.04471023</td>\n",
       "      <td>0.00435700</td>\n",
       "      <td>0.01622211</td>\n",
       "      <td>0.00163542</td>\n",
       "      <td>0.01341047</td>\n",
       "      <td>0.01578682</td>\n",
       "      <td>0.03562574</td>\n",
       "      <td>0.00815639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-16 00:00:00+00:00</th>\n",
       "      <td>0.01078027</td>\n",
       "      <td>0.01419020</td>\n",
       "      <td>0.02977102</td>\n",
       "      <td>0.00768495</td>\n",
       "      <td>0.02199833</td>\n",
       "      <td>-0.00098521</td>\n",
       "      <td>0.01007990</td>\n",
       "      <td>0.02210700</td>\n",
       "      <td>0.01637949</td>\n",
       "      <td>0.01733616</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00471295</td>\n",
       "      <td>0.00053077</td>\n",
       "      <td>-0.00352152</td>\n",
       "      <td>0.00850674</td>\n",
       "      <td>0.02493746</td>\n",
       "      <td>0.02071897</td>\n",
       "      <td>0.01280939</td>\n",
       "      <td>0.00860603</td>\n",
       "      <td>0.01075467</td>\n",
       "      <td>0.00253774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-17 00:00:00+00:00</th>\n",
       "      <td>-0.01721238</td>\n",
       "      <td>-0.01712199</td>\n",
       "      <td>-0.04819014</td>\n",
       "      <td>-0.02119576</td>\n",
       "      <td>-0.02169610</td>\n",
       "      <td>0.00738610</td>\n",
       "      <td>-0.01715337</td>\n",
       "      <td>-0.05335502</td>\n",
       "      <td>-0.01423190</td>\n",
       "      <td>-0.02450989</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.00156361</td>\n",
       "      <td>-0.01814726</td>\n",
       "      <td>-0.01503666</td>\n",
       "      <td>-0.00314212</td>\n",
       "      <td>-0.00778738</td>\n",
       "      <td>-0.02669682</td>\n",
       "      <td>-0.01822419</td>\n",
       "      <td>-0.01196571</td>\n",
       "      <td>-0.01596035</td>\n",
       "      <td>-0.00763722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-18 00:00:00+00:00</th>\n",
       "      <td>-0.04108447</td>\n",
       "      <td>-0.03225884</td>\n",
       "      <td>-0.02286262</td>\n",
       "      <td>-0.02706364</td>\n",
       "      <td>-0.01134153</td>\n",
       "      <td>-0.00449706</td>\n",
       "      <td>-0.03446098</td>\n",
       "      <td>-0.01288309</td>\n",
       "      <td>-0.03067941</td>\n",
       "      <td>-0.01693954</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01901256</td>\n",
       "      <td>-0.01231427</td>\n",
       "      <td>-0.00872355</td>\n",
       "      <td>-0.01045055</td>\n",
       "      <td>-0.00394377</td>\n",
       "      <td>-0.01700150</td>\n",
       "      <td>-0.00499057</td>\n",
       "      <td>-0.01738362</td>\n",
       "      <td>-0.03784484</td>\n",
       "      <td>-0.00279062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-21 00:00:00+00:00</th>\n",
       "      <td>0.00945523</td>\n",
       "      <td>0.03186317</td>\n",
       "      <td>0.00053085</td>\n",
       "      <td>0.01225425</td>\n",
       "      <td>0.00824462</td>\n",
       "      <td>0.00991570</td>\n",
       "      <td>0.00777786</td>\n",
       "      <td>0.01040390</td>\n",
       "      <td>0.00339503</td>\n",
       "      <td>0.01196200</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00635765</td>\n",
       "      <td>0.01677569</td>\n",
       "      <td>-0.00025549</td>\n",
       "      <td>0.00703494</td>\n",
       "      <td>0.01477910</td>\n",
       "      <td>0.00835952</td>\n",
       "      <td>0.02171387</td>\n",
       "      <td>0.01284185</td>\n",
       "      <td>0.00227072</td>\n",
       "      <td>0.01589418</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-22 00:00:00+00:00</th>\n",
       "      <td>0.01050225</td>\n",
       "      <td>0.01167033</td>\n",
       "      <td>-0.01175973</td>\n",
       "      <td>-0.00092672</td>\n",
       "      <td>0.02474629</td>\n",
       "      <td>0.00261687</td>\n",
       "      <td>0.00997788</td>\n",
       "      <td>0.00747281</td>\n",
       "      <td>0.02401222</td>\n",
       "      <td>0.00332573</td>\n",
       "      <td>...</td>\n",
       "      <td>0.03167093</td>\n",
       "      <td>0.00273487</td>\n",
       "      <td>0.00505438</td>\n",
       "      <td>0.01004736</td>\n",
       "      <td>0.03886271</td>\n",
       "      <td>0.00997684</td>\n",
       "      <td>-0.00544780</td>\n",
       "      <td>0.01496575</td>\n",
       "      <td>0.01455341</td>\n",
       "      <td>0.00802720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-23 00:00:00+00:00</th>\n",
       "      <td>0.01180348</td>\n",
       "      <td>0.00921901</td>\n",
       "      <td>0.00832501</td>\n",
       "      <td>0.01286896</td>\n",
       "      <td>0.01717833</td>\n",
       "      <td>0.00756710</td>\n",
       "      <td>0.01395006</td>\n",
       "      <td>0.00636498</td>\n",
       "      <td>0.00937966</td>\n",
       "      <td>0.00829624</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00919881</td>\n",
       "      <td>0.00950124</td>\n",
       "      <td>0.03270236</td>\n",
       "      <td>0.00758616</td>\n",
       "      <td>0.01119292</td>\n",
       "      <td>0.01723748</td>\n",
       "      <td>0.01534943</td>\n",
       "      <td>0.01021896</td>\n",
       "      <td>0.01877295</td>\n",
       "      <td>0.00544406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-24 00:00:00+00:00</th>\n",
       "      <td>-0.00368236</td>\n",
       "      <td>0.01202196</td>\n",
       "      <td>0.00046505</td>\n",
       "      <td>-0.00534053</td>\n",
       "      <td>-0.00204082</td>\n",
       "      <td>0.00009036</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>-0.00181999</td>\n",
       "      <td>-0.00422386</td>\n",
       "      <td>0.00567317</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00962284</td>\n",
       "      <td>-0.00062007</td>\n",
       "      <td>-0.01072430</td>\n",
       "      <td>-0.00212741</td>\n",
       "      <td>0.00555290</td>\n",
       "      <td>-0.00161385</td>\n",
       "      <td>-0.00162043</td>\n",
       "      <td>0.00136401</td>\n",
       "      <td>0.00397518</td>\n",
       "      <td>0.00312135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-28 00:00:00+00:00</th>\n",
       "      <td>0.00704030</td>\n",
       "      <td>-0.01325882</td>\n",
       "      <td>0.00952567</td>\n",
       "      <td>-0.01120361</td>\n",
       "      <td>0.00495300</td>\n",
       "      <td>0.00230910</td>\n",
       "      <td>-0.00154955</td>\n",
       "      <td>-0.00144052</td>\n",
       "      <td>-0.00106045</td>\n",
       "      <td>-0.00616419</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00050303</td>\n",
       "      <td>-0.00106364</td>\n",
       "      <td>-0.00743906</td>\n",
       "      <td>0.00493013</td>\n",
       "      <td>-0.02113809</td>\n",
       "      <td>-0.00348374</td>\n",
       "      <td>-0.00217727</td>\n",
       "      <td>-0.00641306</td>\n",
       "      <td>-0.00503256</td>\n",
       "      <td>-0.00478388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-29 00:00:00+00:00</th>\n",
       "      <td>0.01944279</td>\n",
       "      <td>0.00625637</td>\n",
       "      <td>0.01095726</td>\n",
       "      <td>0.01797599</td>\n",
       "      <td>0.01191076</td>\n",
       "      <td>0.00556913</td>\n",
       "      <td>0.01754180</td>\n",
       "      <td>0.01191401</td>\n",
       "      <td>0.01199575</td>\n",
       "      <td>0.01522413</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01381318</td>\n",
       "      <td>0.00796362</td>\n",
       "      <td>0.00533553</td>\n",
       "      <td>0.01143615</td>\n",
       "      <td>0.01128297</td>\n",
       "      <td>0.00430697</td>\n",
       "      <td>0.00541538</td>\n",
       "      <td>0.00723499</td>\n",
       "      <td>0.00617376</td>\n",
       "      <td>0.00899694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-30 00:00:00+00:00</th>\n",
       "      <td>-0.00638405</td>\n",
       "      <td>-0.01608535</td>\n",
       "      <td>-0.00525423</td>\n",
       "      <td>-0.01305616</td>\n",
       "      <td>0.00590373</td>\n",
       "      <td>0.00239063</td>\n",
       "      <td>-0.01201673</td>\n",
       "      <td>0.00512422</td>\n",
       "      <td>-0.00052449</td>\n",
       "      <td>-0.01325558</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01461683</td>\n",
       "      <td>-0.00706442</td>\n",
       "      <td>-0.01326109</td>\n",
       "      <td>-0.00807866</td>\n",
       "      <td>0.00184720</td>\n",
       "      <td>-0.00618212</td>\n",
       "      <td>-0.00578080</td>\n",
       "      <td>-0.00292090</td>\n",
       "      <td>-0.01223479</td>\n",
       "      <td>-0.00145450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-31 00:00:00+00:00</th>\n",
       "      <td>-0.01243206</td>\n",
       "      <td>-0.01053186</td>\n",
       "      <td>-0.00587919</td>\n",
       "      <td>-0.01919944</td>\n",
       "      <td>-0.00937219</td>\n",
       "      <td>-0.01248112</td>\n",
       "      <td>-0.00795266</td>\n",
       "      <td>-0.01284442</td>\n",
       "      <td>-0.01406381</td>\n",
       "      <td>-0.02174525</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.01605213</td>\n",
       "      <td>-0.01817456</td>\n",
       "      <td>-0.00205030</td>\n",
       "      <td>-0.00911914</td>\n",
       "      <td>-0.00837082</td>\n",
       "      <td>-0.01003138</td>\n",
       "      <td>-0.01029925</td>\n",
       "      <td>0.00117577</td>\n",
       "      <td>-0.00621188</td>\n",
       "      <td>-0.00705088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-04 00:00:00+00:00</th>\n",
       "      <td>-0.02828157</td>\n",
       "      <td>-0.03398810</td>\n",
       "      <td>0.01149418</td>\n",
       "      <td>0.00085542</td>\n",
       "      <td>-0.02751240</td>\n",
       "      <td>-0.01774070</td>\n",
       "      <td>-0.04406668</td>\n",
       "      <td>-0.02555086</td>\n",
       "      <td>-0.02097083</td>\n",
       "      <td>-0.01591868</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.02476714</td>\n",
       "      <td>-0.02492212</td>\n",
       "      <td>-0.00627612</td>\n",
       "      <td>-0.03271090</td>\n",
       "      <td>-0.03105128</td>\n",
       "      <td>-0.01151995</td>\n",
       "      <td>-0.01148918</td>\n",
       "      <td>-0.00760365</td>\n",
       "      <td>-0.02161389</td>\n",
       "      <td>-0.01356408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-05 00:00:00+00:00</th>\n",
       "      <td>0.00405845</td>\n",
       "      <td>-0.00954098</td>\n",
       "      <td>-0.00683002</td>\n",
       "      <td>-0.02505441</td>\n",
       "      <td>-0.00416936</td>\n",
       "      <td>0.01462920</td>\n",
       "      <td>-0.00024665</td>\n",
       "      <td>0.00520704</td>\n",
       "      <td>0.00402305</td>\n",
       "      <td>-0.00734750</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00209794</td>\n",
       "      <td>0.01486318</td>\n",
       "      <td>0.00851070</td>\n",
       "      <td>0.02039022</td>\n",
       "      <td>-0.00195732</td>\n",
       "      <td>-0.00028634</td>\n",
       "      <td>-0.00249493</td>\n",
       "      <td>0.02081954</td>\n",
       "      <td>-0.01085325</td>\n",
       "      <td>0.01564723</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1256 rows × 490 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                           Equity(0 [A])  Equity(1 [AAL])  Equity(2 [AAP])  \\\n",
       "2011-01-07 00:00:00+00:00     0.00843652       0.01423027       0.02670202   \n",
       "2011-01-10 00:00:00+00:00    -0.00417428       0.00619534       0.00743543   \n",
       "2011-01-11 00:00:00+00:00    -0.00188630      -0.04364361      -0.00592730   \n",
       "2011-01-12 00:00:00+00:00     0.01725375      -0.00823708       0.01338721   \n",
       "2011-01-13 00:00:00+00:00    -0.00455851       0.00095465       0.00303109   \n",
       "2011-01-14 00:00:00+00:00     0.00343886      -0.00915594       0.00302193   \n",
       "2011-01-18 00:00:00+00:00     0.03425353      -0.06208490      -0.00428562   \n",
       "2011-01-19 00:00:00+00:00    -0.01022379      -0.00892857       0.00875376   \n",
       "2011-01-20 00:00:00+00:00    -0.00849568       0.02195299      -0.00473189   \n",
       "2011-01-21 00:00:00+00:00     0.00787281      -0.04103759       0.00554409   \n",
       "2011-01-24 00:00:00+00:00     0.01464622       0.02747253      -0.00110591   \n",
       "2011-01-25 00:00:00+00:00    -0.00673624       0.00298231       0.00914590   \n",
       "2011-01-26 00:00:00+00:00    -0.03073582       0.06613350       0.00359340   \n",
       "2011-01-27 00:00:00+00:00     0.00772081       0.02317753      -0.00155262   \n",
       "2011-01-28 00:00:00+00:00    -0.01884631      -0.08055268      -0.00093620   \n",
       "2011-01-31 00:00:00+00:00     0.00360809      -0.02361480      -0.00235062   \n",
       "2011-02-01 00:00:00+00:00     0.01165376      -0.00104701      -0.00921769   \n",
       "2011-02-02 00:00:00+00:00     0.01011176      -0.03930406      -0.02747650   \n",
       "2011-02-03 00:00:00+00:00    -0.00028893       0.00730962       0.01412639   \n",
       "2011-02-04 00:00:00+00:00     0.00562724      -0.03649951       0.02401434   \n",
       "2011-02-07 00:00:00+00:00     0.00770895       0.05204586       0.00811404   \n",
       "2011-02-08 00:00:00+00:00     0.01085425       0.01645475       0.00620226   \n",
       "2011-02-09 00:00:00+00:00     0.00466351       0.00000000       0.01695500   \n",
       "2011-02-10 00:00:00+00:00     0.00041298      -0.00304846      -0.01136679   \n",
       "2011-02-11 00:00:00+00:00    -0.00714982       0.02836356       0.00076442   \n",
       "2011-02-14 00:00:00+00:00     0.00166312      -0.01579001      -0.02327358   \n",
       "2011-02-15 00:00:00+00:00    -0.01190476       0.01104282      -0.00392614   \n",
       "2011-02-16 00:00:00+00:00     0.01512325       0.00195775       0.01385974   \n",
       "2011-02-17 00:00:00+00:00    -0.00331066      -0.01779103      -0.02484354   \n",
       "2011-02-18 00:00:00+00:00     0.01107771      -0.02010261      -0.00669325   \n",
       "...                                  ...              ...              ...   \n",
       "2015-11-20 00:00:00+00:00     0.00107212      -0.00237346       0.00276686   \n",
       "2015-11-23 00:00:00+00:00    -0.00709429       0.00237910      -0.00122838   \n",
       "2015-11-24 00:00:00+00:00     0.00208486      -0.02530879       0.00350426   \n",
       "2015-11-25 00:00:00+00:00    -0.00820649       0.00193813       0.00680544   \n",
       "2015-11-27 00:00:00+00:00    -0.00325586       0.00920070       0.00328491   \n",
       "2015-11-30 00:00:00+00:00    -0.01020870      -0.01032093      -0.01279784   \n",
       "2015-12-01 00:00:00+00:00     0.01574786       0.04849282      -0.00239635   \n",
       "2015-12-02 00:00:00+00:00    -0.00528420       0.01293012      -0.02716607   \n",
       "2015-12-03 00:00:00+00:00    -0.00952117      -0.01255465      -0.01994438   \n",
       "2015-12-04 00:00:00+00:00     0.02019919       0.03930296       0.00677909   \n",
       "2015-12-07 00:00:00+00:00    -0.00033987       0.01801987      -0.02957813   \n",
       "2015-12-08 00:00:00+00:00    -0.02330712      -0.02687583      -0.00886608   \n",
       "2015-12-09 00:00:00+00:00    -0.00516964      -0.02021340       0.02222267   \n",
       "2015-12-10 00:00:00+00:00     0.01503860       0.01009224      -0.00946596   \n",
       "2015-12-11 00:00:00+00:00    -0.01222670      -0.04535632      -0.01917906   \n",
       "2015-12-14 00:00:00+00:00    -0.01119741      -0.00761835      -0.00832534   \n",
       "2015-12-15 00:00:00+00:00     0.02468348       0.01976847       0.05799045   \n",
       "2015-12-16 00:00:00+00:00     0.01078027       0.01419020       0.02977102   \n",
       "2015-12-17 00:00:00+00:00    -0.01721238      -0.01712199      -0.04819014   \n",
       "2015-12-18 00:00:00+00:00    -0.04108447      -0.03225884      -0.02286262   \n",
       "2015-12-21 00:00:00+00:00     0.00945523       0.03186317       0.00053085   \n",
       "2015-12-22 00:00:00+00:00     0.01050225       0.01167033      -0.01175973   \n",
       "2015-12-23 00:00:00+00:00     0.01180348       0.00921901       0.00832501   \n",
       "2015-12-24 00:00:00+00:00    -0.00368236       0.01202196       0.00046505   \n",
       "2015-12-28 00:00:00+00:00     0.00704030      -0.01325882       0.00952567   \n",
       "2015-12-29 00:00:00+00:00     0.01944279       0.00625637       0.01095726   \n",
       "2015-12-30 00:00:00+00:00    -0.00638405      -0.01608535      -0.00525423   \n",
       "2015-12-31 00:00:00+00:00    -0.01243206      -0.01053186      -0.00587919   \n",
       "2016-01-04 00:00:00+00:00    -0.02828157      -0.03398810       0.01149418   \n",
       "2016-01-05 00:00:00+00:00     0.00405845      -0.00954098      -0.00683002   \n",
       "\n",
       "                           Equity(3 [AAPL])  Equity(4 [ABBV])  \\\n",
       "2011-01-07 00:00:00+00:00        0.00714639        0.00000000   \n",
       "2011-01-10 00:00:00+00:00        0.01885158        0.00000000   \n",
       "2011-01-11 00:00:00+00:00       -0.00236744        0.00000000   \n",
       "2011-01-12 00:00:00+00:00        0.00813289        0.00000000   \n",
       "2011-01-13 00:00:00+00:00        0.00365656        0.00000000   \n",
       "2011-01-14 00:00:00+00:00        0.00810620        0.00000000   \n",
       "2011-01-18 00:00:00+00:00       -0.02247419        0.00000000   \n",
       "2011-01-19 00:00:00+00:00       -0.00531448        0.00000000   \n",
       "2011-01-20 00:00:00+00:00       -0.01818900        0.00000000   \n",
       "2011-01-21 00:00:00+00:00       -0.01791080        0.00000000   \n",
       "2011-01-24 00:00:00+00:00        0.03283704        0.00000000   \n",
       "2011-01-25 00:00:00+00:00        0.01170955        0.00000000   \n",
       "2011-01-26 00:00:00+00:00        0.00719342        0.00000000   \n",
       "2011-01-27 00:00:00+00:00       -0.00187707        0.00000000   \n",
       "2011-01-28 00:00:00+00:00       -0.02070958        0.00000000   \n",
       "2011-01-31 00:00:00+00:00        0.00957845        0.00000000   \n",
       "2011-02-01 00:00:00+00:00        0.01681783        0.00000000   \n",
       "2011-02-02 00:00:00+00:00       -0.00205320        0.00000000   \n",
       "2011-02-03 00:00:00+00:00       -0.00256035        0.00000000   \n",
       "2011-02-04 00:00:00+00:00        0.00891547        0.00000000   \n",
       "2011-02-07 00:00:00+00:00        0.01553804        0.00000000   \n",
       "2011-02-08 00:00:00+00:00        0.00943966        0.00000000   \n",
       "2011-02-09 00:00:00+00:00        0.00833204        0.00000000   \n",
       "2011-02-10 00:00:00+00:00       -0.01010922        0.00000000   \n",
       "2011-02-11 00:00:00+00:00        0.00650490        0.00000000   \n",
       "2011-02-14 00:00:00+00:00        0.00652903        0.00000000   \n",
       "2011-02-15 00:00:00+00:00        0.00201613        0.00000000   \n",
       "2011-02-16 00:00:00+00:00        0.00896684        0.00000000   \n",
       "2011-02-17 00:00:00+00:00       -0.01330906        0.00000000   \n",
       "2011-02-18 00:00:00+00:00       -0.02159490        0.00000000   \n",
       "...                                     ...               ...   \n",
       "2015-11-20 00:00:00+00:00        0.00438086        0.00925624   \n",
       "2015-11-23 00:00:00+00:00       -0.01298872        0.00064612   \n",
       "2015-11-24 00:00:00+00:00        0.00959410       -0.00032285   \n",
       "2015-11-25 00:00:00+00:00       -0.00715141       -0.01374361   \n",
       "2015-11-27 00:00:00+00:00       -0.00186283       -0.00480271   \n",
       "2015-11-30 00:00:00+00:00        0.00415919       -0.03083813   \n",
       "2015-12-01 00:00:00+00:00       -0.00811576        0.01495718   \n",
       "2015-12-02 00:00:00+00:00       -0.00902983       -0.02202152   \n",
       "2015-12-03 00:00:00+00:00       -0.00929219       -0.02772394   \n",
       "2015-12-04 00:00:00+00:00        0.03324578        0.01889890   \n",
       "2015-12-07 00:00:00+00:00       -0.00629799       -0.01592051   \n",
       "2015-12-08 00:00:00+00:00       -0.00042489        0.00711446   \n",
       "2015-12-09 00:00:00+00:00       -0.02207699       -0.01130272   \n",
       "2015-12-10 00:00:00+00:00        0.00476320       -0.00446315   \n",
       "2015-12-11 00:00:00+00:00       -0.02573993       -0.03118548   \n",
       "2015-12-14 00:00:00+00:00       -0.00618871        0.02589759   \n",
       "2015-12-15 00:00:00+00:00       -0.01768577        0.01713257   \n",
       "2015-12-16 00:00:00+00:00        0.00768495        0.02199833   \n",
       "2015-12-17 00:00:00+00:00       -0.02119576       -0.02169610   \n",
       "2015-12-18 00:00:00+00:00       -0.02706364       -0.01134153   \n",
       "2015-12-21 00:00:00+00:00        0.01225425        0.00824462   \n",
       "2015-12-22 00:00:00+00:00       -0.00092672        0.02474629   \n",
       "2015-12-23 00:00:00+00:00        0.01286896        0.01717833   \n",
       "2015-12-24 00:00:00+00:00       -0.00534053       -0.00204082   \n",
       "2015-12-28 00:00:00+00:00       -0.01120361        0.00495300   \n",
       "2015-12-29 00:00:00+00:00        0.01797599        0.01191076   \n",
       "2015-12-30 00:00:00+00:00       -0.01305616        0.00590373   \n",
       "2015-12-31 00:00:00+00:00       -0.01919944       -0.00937219   \n",
       "2016-01-04 00:00:00+00:00        0.00085542       -0.02751240   \n",
       "2016-01-05 00:00:00+00:00       -0.02505441       -0.00416936   \n",
       "\n",
       "                           Equity(5 [ABC])  Equity(6 [ABT])  Equity(7 [ACN])  \\\n",
       "2011-01-07 00:00:00+00:00       0.00199434       0.00416541       0.00164769   \n",
       "2011-01-10 00:00:00+00:00      -0.00571429      -0.00889600      -0.00885384   \n",
       "2011-01-11 00:00:00+00:00       0.00978303      -0.00206747       0.01371668   \n",
       "2011-01-12 00:00:00+00:00      -0.00597922      -0.00101061       0.02296913   \n",
       "2011-01-13 00:00:00+00:00       0.01492537      -0.00445119      -0.00040011   \n",
       "2011-01-14 00:00:00+00:00       0.00139452      -0.01011076       0.00259000   \n",
       "2011-01-18 00:00:00+00:00       0.02088872       0.00662116       0.00699843   \n",
       "2011-01-19 00:00:00+00:00      -0.01714410       0.00275342      -0.00296182   \n",
       "2011-01-20 00:00:00+00:00       0.00479450       0.01332249       0.01871257   \n",
       "2011-01-21 00:00:00+00:00       0.01064197      -0.00085307      -0.00195169   \n",
       "2011-01-24 00:00:00+00:00       0.00524943       0.00522324       0.00842018   \n",
       "2011-01-25 00:00:00+00:00      -0.00936254      -0.00434674       0.00485935   \n",
       "2011-01-26 00:00:00+00:00       0.01222707      -0.02524087       0.01219180   \n",
       "2011-01-27 00:00:00+00:00       0.01183286      -0.00792793       0.00017944   \n",
       "2011-01-28 00:00:00+00:00      -0.02226215      -0.01919983      -0.01603463   \n",
       "2011-01-31 00:00:00+00:00      -0.00389347      -0.00724829      -0.00098003   \n",
       "2011-02-01 00:00:00+00:00       0.01197624       0.00154551       0.01749823   \n",
       "2011-02-02 00:00:00+00:00      -0.02119705       0.01106795       0.00363229   \n",
       "2011-02-03 00:00:00+00:00      -0.00366196       0.00589443       0.00417765   \n",
       "2011-02-04 00:00:00+00:00       0.03304712       0.00261602      -0.00436050   \n",
       "2011-02-07 00:00:00+00:00      -0.00217765      -0.00934092       0.00227918   \n",
       "2011-02-08 00:00:00+00:00       0.00218240      -0.00173831      -0.00055735   \n",
       "2011-02-09 00:00:00+00:00       0.00300577      -0.00153026       0.00113763   \n",
       "2011-02-10 00:00:00+00:00       0.00110085      -0.00110982       0.00550344   \n",
       "2011-02-11 00:00:00+00:00      -0.00137455       0.00153431      -0.01114607   \n",
       "2011-02-14 00:00:00+00:00       0.00575047       0.00924459       0.00020168   \n",
       "2011-02-15 00:00:00+00:00      -0.00732946       0.01674954      -0.00802079   \n",
       "2011-02-16 00:00:00+00:00      -0.00355392      -0.01050193       0.02732858   \n",
       "2011-02-17 00:00:00+00:00       0.02914771       0.00130066       0.01178385   \n",
       "2011-02-18 00:00:00+00:00       0.00961998       0.01210641      -0.00795272   \n",
       "...                                    ...              ...              ...   \n",
       "2015-11-20 00:00:00+00:00      -0.00090483       0.00611281       0.00643014   \n",
       "2015-11-23 00:00:00+00:00      -0.00372792      -0.01238148      -0.00120585   \n",
       "2015-11-24 00:00:00+00:00      -0.00233603       0.00020972      -0.00453713   \n",
       "2015-11-25 00:00:00+00:00       0.00436515      -0.00086201      -0.00233759   \n",
       "2015-11-27 00:00:00+00:00       0.00061184       0.00020986       0.00336265   \n",
       "2015-11-30 00:00:00+00:00      -0.00354229      -0.01100361      -0.00222774   \n",
       "2015-12-01 00:00:00+00:00       0.00871792       0.01202178       0.00848039   \n",
       "2015-12-02 00:00:00+00:00      -0.00653437      -0.00528731      -0.00499107   \n",
       "2015-12-03 00:00:00+00:00      -0.00141471      -0.02365007      -0.01542891   \n",
       "2015-12-04 00:00:00+00:00       0.01195750       0.02604566       0.02992398   \n",
       "2015-12-07 00:00:00+00:00       0.00089849       0.00572671      -0.00146283   \n",
       "2015-12-08 00:00:00+00:00       0.00490595      -0.00020917      -0.00027950   \n",
       "2015-12-09 00:00:00+00:00       0.00198396      -0.01294807      -0.01487559   \n",
       "2015-12-10 00:00:00+00:00       0.01271990       0.00777184       0.00289674   \n",
       "2015-12-11 00:00:00+00:00       0.00127956      -0.02096235      -0.02137978   \n",
       "2015-12-14 00:00:00+00:00       0.00440628       0.01014465       0.01007090   \n",
       "2015-12-15 00:00:00+00:00      -0.00819372       0.01741535       0.00338602   \n",
       "2015-12-16 00:00:00+00:00      -0.00098521       0.01007990       0.02210700   \n",
       "2015-12-17 00:00:00+00:00       0.00738610      -0.01715337      -0.05335502   \n",
       "2015-12-18 00:00:00+00:00      -0.00449706      -0.03446098      -0.01288309   \n",
       "2015-12-21 00:00:00+00:00       0.00991570       0.00777786       0.01040390   \n",
       "2015-12-22 00:00:00+00:00       0.00261687       0.00997788       0.00747281   \n",
       "2015-12-23 00:00:00+00:00       0.00756710       0.01395006       0.00636498   \n",
       "2015-12-24 00:00:00+00:00       0.00009036       0.00000000      -0.00181999   \n",
       "2015-12-28 00:00:00+00:00       0.00230910      -0.00154955      -0.00144052   \n",
       "2015-12-29 00:00:00+00:00       0.00556913       0.01754180       0.01191401   \n",
       "2015-12-30 00:00:00+00:00       0.00239063      -0.01201673       0.00512422   \n",
       "2015-12-31 00:00:00+00:00      -0.01248112      -0.00795266      -0.01284442   \n",
       "2016-01-04 00:00:00+00:00      -0.01774070      -0.04406668      -0.02555086   \n",
       "2016-01-05 00:00:00+00:00       0.01462920      -0.00024665       0.00520704   \n",
       "\n",
       "                           Equity(8 [ADBE])  Equity(9 [ADI])  \\\n",
       "2011-01-07 00:00:00+00:00       -0.00712736      -0.00581846   \n",
       "2011-01-10 00:00:00+00:00        0.02871411       0.00292626   \n",
       "2011-01-11 00:00:00+00:00        0.00060680       0.00875316   \n",
       "2011-01-12 00:00:00+00:00        0.01795027       0.00025710   \n",
       "2011-01-13 00:00:00+00:00       -0.00571905      -0.00501221   \n",
       "2011-01-14 00:00:00+00:00        0.01228280       0.01982692   \n",
       "2011-01-18 00:00:00+00:00        0.01154188       0.03264518   \n",
       "2011-01-19 00:00:00+00:00       -0.00789936      -0.02057462   \n",
       "2011-01-20 00:00:00+00:00       -0.01238573      -0.00281761   \n",
       "2011-01-21 00:00:00+00:00       -0.00656913      -0.00411277   \n",
       "2011-01-24 00:00:00+00:00        0.02284340       0.01497431   \n",
       "2011-01-25 00:00:00+00:00       -0.01381134      -0.01450491   \n",
       "2011-01-26 00:00:00+00:00       -0.00119190       0.00283652   \n",
       "2011-01-27 00:00:00+00:00        0.00984487       0.00747981   \n",
       "2011-01-28 00:00:00+00:00       -0.04017725      -0.02245999   \n",
       "2011-01-31 00:00:00+00:00        0.01723607       0.01381753   \n",
       "2011-02-01 00:00:00+00:00        0.01391831       0.02162417   \n",
       "2011-02-02 00:00:00+00:00       -0.00238735       0.00227994   \n",
       "2011-02-03 00:00:00+00:00        0.00299133      -0.01334112   \n",
       "2011-02-04 00:00:00+00:00       -0.00507009       0.01965916   \n",
       "2011-02-07 00:00:00+00:00        0.00599520      -0.00351381   \n",
       "2011-02-08 00:00:00+00:00        0.00029797      -0.00600987   \n",
       "2011-02-09 00:00:00+00:00       -0.01668156       0.00478144   \n",
       "2011-02-10 00:00:00+00:00        0.01696456       0.00451308   \n",
       "2011-02-11 00:00:00+00:00        0.00297885       0.01500657   \n",
       "2011-02-14 00:00:00+00:00        0.00564301       0.00987654   \n",
       "2011-02-15 00:00:00+00:00        0.00236267       0.00023854   \n",
       "2011-02-16 00:00:00+00:00        0.02209782      -0.00390509   \n",
       "2011-02-17 00:00:00+00:00        0.00835976       0.00855903   \n",
       "2011-02-18 00:00:00+00:00        0.01172098      -0.00169134   \n",
       "...                                     ...              ...   \n",
       "2015-11-20 00:00:00+00:00        0.00054490      -0.00584294   \n",
       "2015-11-23 00:00:00+00:00        0.00163381      -0.04410655   \n",
       "2015-11-24 00:00:00+00:00        0.00043497       0.06374097   \n",
       "2015-11-25 00:00:00+00:00       -0.00250000      -0.00281048   \n",
       "2015-11-27 00:00:00+00:00        0.00435872       0.00331472   \n",
       "2015-11-30 00:00:00+00:00       -0.00770316       0.01952228   \n",
       "2015-12-01 00:00:00+00:00        0.01191778      -0.00097042   \n",
       "2015-12-02 00:00:00+00:00       -0.00572663      -0.00699034   \n",
       "2015-12-03 00:00:00+00:00       -0.02292980      -0.02782630   \n",
       "2015-12-04 00:00:00+00:00        0.02969636       0.00271314   \n",
       "2015-12-07 00:00:00+00:00       -0.03218838      -0.01198796   \n",
       "2015-12-08 00:00:00+00:00        0.02366071      -0.00821590   \n",
       "2015-12-09 00:00:00+00:00       -0.02354993      -0.02360837   \n",
       "2015-12-10 00:00:00+00:00       -0.00669942       0.00882138   \n",
       "2015-12-11 00:00:00+00:00        0.02765288      -0.00384301   \n",
       "2015-12-14 00:00:00+00:00        0.02012689      -0.00193824   \n",
       "2015-12-15 00:00:00+00:00        0.00814926      -0.00474296   \n",
       "2015-12-16 00:00:00+00:00        0.01637949       0.01733616   \n",
       "2015-12-17 00:00:00+00:00       -0.01423190      -0.02450989   \n",
       "2015-12-18 00:00:00+00:00       -0.03067941      -0.01693954   \n",
       "2015-12-21 00:00:00+00:00        0.00339503       0.01196200   \n",
       "2015-12-22 00:00:00+00:00        0.02401222       0.00332573   \n",
       "2015-12-23 00:00:00+00:00        0.00937966       0.00829624   \n",
       "2015-12-24 00:00:00+00:00       -0.00422386       0.00567317   \n",
       "2015-12-28 00:00:00+00:00       -0.00106045      -0.00616419   \n",
       "2015-12-29 00:00:00+00:00        0.01199575       0.01522413   \n",
       "2015-12-30 00:00:00+00:00       -0.00052449      -0.01325558   \n",
       "2015-12-31 00:00:00+00:00       -0.01406381      -0.02174525   \n",
       "2016-01-04 00:00:00+00:00       -0.02097083      -0.01591868   \n",
       "2016-01-05 00:00:00+00:00        0.00402305      -0.00734750   \n",
       "\n",
       "                                 ...          Equity(481 [XL])  \\\n",
       "2011-01-07 00:00:00+00:00        ...               -0.00183775   \n",
       "2011-01-10 00:00:00+00:00        ...                0.00094687   \n",
       "2011-01-11 00:00:00+00:00        ...                0.00131385   \n",
       "2011-01-12 00:00:00+00:00        ...                0.00498609   \n",
       "2011-01-13 00:00:00+00:00        ...                0.03049927   \n",
       "2011-01-14 00:00:00+00:00        ...                0.02660653   \n",
       "2011-01-18 00:00:00+00:00        ...                0.00167843   \n",
       "2011-01-19 00:00:00+00:00        ...               -0.01483416   \n",
       "2011-01-20 00:00:00+00:00        ...               -0.02451226   \n",
       "2011-01-21 00:00:00+00:00        ...                0.00000000   \n",
       "2011-01-24 00:00:00+00:00        ...                0.01235897   \n",
       "2011-01-25 00:00:00+00:00        ...                0.00217821   \n",
       "2011-01-26 00:00:00+00:00        ...                0.00262839   \n",
       "2011-01-27 00:00:00+00:00        ...                0.01426699   \n",
       "2011-01-28 00:00:00+00:00        ...               -0.02564740   \n",
       "2011-01-31 00:00:00+00:00        ...                0.00484620   \n",
       "2011-02-01 00:00:00+00:00        ...                0.01568687   \n",
       "2011-02-02 00:00:00+00:00        ...               -0.01284550   \n",
       "2011-02-03 00:00:00+00:00        ...                0.01043038   \n",
       "2011-02-04 00:00:00+00:00        ...                0.00947084   \n",
       "2011-02-07 00:00:00+00:00        ...                0.00680069   \n",
       "2011-02-08 00:00:00+00:00        ...                0.00384577   \n",
       "2011-02-09 00:00:00+00:00        ...               -0.01183694   \n",
       "2011-02-10 00:00:00+00:00        ...               -0.00894677   \n",
       "2011-02-11 00:00:00+00:00        ...                0.00170520   \n",
       "2011-02-14 00:00:00+00:00        ...               -0.01161568   \n",
       "2011-02-15 00:00:00+00:00        ...               -0.00607872   \n",
       "2011-02-16 00:00:00+00:00        ...                0.00917384   \n",
       "2011-02-17 00:00:00+00:00        ...                0.01565577   \n",
       "2011-02-18 00:00:00+00:00        ...                0.05340361   \n",
       "...                              ...                       ...   \n",
       "2015-11-20 00:00:00+00:00        ...                0.00813121   \n",
       "2015-11-23 00:00:00+00:00        ...               -0.00469574   \n",
       "2015-11-24 00:00:00+00:00        ...               -0.00077707   \n",
       "2015-11-25 00:00:00+00:00        ...               -0.00888765   \n",
       "2015-11-27 00:00:00+00:00        ...                0.00473588   \n",
       "2015-11-30 00:00:00+00:00        ...                0.00421152   \n",
       "2015-12-01 00:00:00+00:00        ...                0.01519233   \n",
       "2015-12-02 00:00:00+00:00        ...               -0.00385752   \n",
       "2015-12-03 00:00:00+00:00        ...               -0.00829420   \n",
       "2015-12-04 00:00:00+00:00        ...                0.02221053   \n",
       "2015-12-07 00:00:00+00:00        ...                0.00000000   \n",
       "2015-12-08 00:00:00+00:00        ...               -0.00460567   \n",
       "2015-12-09 00:00:00+00:00        ...               -0.01309164   \n",
       "2015-12-10 00:00:00+00:00        ...               -0.00675676   \n",
       "2015-12-11 00:00:00+00:00        ...               -0.01493822   \n",
       "2015-12-14 00:00:00+00:00        ...                0.00721594   \n",
       "2015-12-15 00:00:00+00:00        ...                0.01539193   \n",
       "2015-12-16 00:00:00+00:00        ...                0.00471295   \n",
       "2015-12-17 00:00:00+00:00        ...               -0.00156361   \n",
       "2015-12-18 00:00:00+00:00        ...               -0.01901256   \n",
       "2015-12-21 00:00:00+00:00        ...                0.00635765   \n",
       "2015-12-22 00:00:00+00:00        ...                0.03167093   \n",
       "2015-12-23 00:00:00+00:00        ...                0.00919881   \n",
       "2015-12-24 00:00:00+00:00        ...                0.00962284   \n",
       "2015-12-28 00:00:00+00:00        ...                0.00050303   \n",
       "2015-12-29 00:00:00+00:00        ...                0.01381318   \n",
       "2015-12-30 00:00:00+00:00        ...               -0.01461683   \n",
       "2015-12-31 00:00:00+00:00        ...               -0.01605213   \n",
       "2016-01-04 00:00:00+00:00        ...               -0.02476714   \n",
       "2016-01-05 00:00:00+00:00        ...                0.00209794   \n",
       "\n",
       "                           Equity(482 [XLNX])  Equity(483 [XOM])  \\\n",
       "2011-01-07 00:00:00+00:00         -0.00561865         0.00546091   \n",
       "2011-01-10 00:00:00+00:00          0.00781438        -0.00608100   \n",
       "2011-01-11 00:00:00+00:00          0.01017933         0.00744242   \n",
       "2011-01-12 00:00:00+00:00          0.01566621         0.01176334   \n",
       "2011-01-13 00:00:00+00:00         -0.00321668         0.00169383   \n",
       "2011-01-14 00:00:00+00:00          0.02589425         0.01474258   \n",
       "2011-01-18 00:00:00+00:00          0.00250133         0.01116324   \n",
       "2011-01-19 00:00:00+00:00         -0.02358990        -0.00596800   \n",
       "2011-01-20 00:00:00+00:00          0.00774353        -0.00626137   \n",
       "2011-01-21 00:00:00+00:00          0.00061472         0.01582494   \n",
       "2011-01-24 00:00:00+00:00          0.01601137        -0.00494300   \n",
       "2011-01-25 00:00:00+00:00          0.00627338         0.00115375   \n",
       "2011-01-26 00:00:00+00:00          0.00593383         0.01245258   \n",
       "2011-01-27 00:00:00+00:00          0.02116856         0.00275077   \n",
       "2011-01-28 00:00:00+00:00         -0.02010822        -0.01113056   \n",
       "2011-01-31 00:00:00+00:00          0.00029849         0.02139566   \n",
       "2011-02-01 00:00:00+00:00          0.03200298         0.04003746   \n",
       "2011-02-02 00:00:00+00:00         -0.00451785        -0.00595828   \n",
       "2011-02-03 00:00:00+00:00         -0.00816904         0.00034726   \n",
       "2011-02-04 00:00:00+00:00          0.02470898        -0.00191681   \n",
       "2011-02-07 00:00:00+00:00         -0.00507270         0.00780293   \n",
       "2011-02-08 00:00:00+00:00          0.00179527        -0.00607698   \n",
       "2011-02-09 00:00:00+00:00         -0.00179205        -0.00517814   \n",
       "2011-02-10 00:00:00+00:00          0.00391368         0.00787593   \n",
       "2011-02-11 00:00:00+00:00          0.01076538        -0.00456215   \n",
       "2011-02-14 00:00:00+00:00          0.00031846         0.02522953   \n",
       "2011-02-15 00:00:00+00:00         -0.00180403        -0.02285301   \n",
       "2011-02-16 00:00:00+00:00          0.00386265         0.00868160   \n",
       "2011-02-17 00:00:00+00:00          0.00031771         0.00227521   \n",
       "2011-02-18 00:00:00+00:00          0.00144687         0.00739258   \n",
       "...                                       ...                ...   \n",
       "2015-11-20 00:00:00+00:00          0.00041182        -0.00635194   \n",
       "2015-11-23 00:00:00+00:00         -0.00695468         0.00613134   \n",
       "2015-11-24 00:00:00+00:00          0.01295953         0.01993523   \n",
       "2015-11-25 00:00:00+00:00         -0.00445842        -0.00768963   \n",
       "2015-11-27 00:00:00+00:00          0.00447839        -0.00025651   \n",
       "2015-11-30 00:00:00+00:00          0.00934761         0.00529351   \n",
       "2015-12-01 00:00:00+00:00          0.01107484         0.00282087   \n",
       "2015-12-02 00:00:00+00:00         -0.02469292        -0.02857143   \n",
       "2015-12-03 00:00:00+00:00         -0.01081970        -0.01432669   \n",
       "2015-12-04 00:00:00+00:00          0.01032552         0.00573563   \n",
       "2015-12-07 00:00:00+00:00         -0.00879092        -0.02612215   \n",
       "2015-12-08 00:00:00+00:00         -0.00391018        -0.02825109   \n",
       "2015-12-09 00:00:00+00:00         -0.00993443         0.01338977   \n",
       "2015-12-10 00:00:00+00:00          0.00188278         0.00079770   \n",
       "2015-12-11 00:00:00+00:00         -0.01271252        -0.01783980   \n",
       "2015-12-14 00:00:00+00:00         -0.00094052         0.02273800   \n",
       "2015-12-15 00:00:00+00:00          0.01351594         0.04471023   \n",
       "2015-12-16 00:00:00+00:00          0.00053077        -0.00352152   \n",
       "2015-12-17 00:00:00+00:00         -0.01814726        -0.01503666   \n",
       "2015-12-18 00:00:00+00:00         -0.01231427        -0.00872355   \n",
       "2015-12-21 00:00:00+00:00          0.01677569        -0.00025549   \n",
       "2015-12-22 00:00:00+00:00          0.00273487         0.00505438   \n",
       "2015-12-23 00:00:00+00:00          0.00950124         0.03270236   \n",
       "2015-12-24 00:00:00+00:00         -0.00062007        -0.01072430   \n",
       "2015-12-28 00:00:00+00:00         -0.00106364        -0.00743906   \n",
       "2015-12-29 00:00:00+00:00          0.00796362         0.00533553   \n",
       "2015-12-30 00:00:00+00:00         -0.00706442        -0.01326109   \n",
       "2015-12-31 00:00:00+00:00         -0.01817456        -0.00205030   \n",
       "2016-01-04 00:00:00+00:00         -0.02492212        -0.00627612   \n",
       "2016-01-05 00:00:00+00:00          0.01486318         0.00851070   \n",
       "\n",
       "                           Equity(484 [XRAY])  Equity(485 [XRX])  \\\n",
       "2011-01-07 00:00:00+00:00         -0.00404361        -0.01395259   \n",
       "2011-01-10 00:00:00+00:00          0.01046585         0.00973303   \n",
       "2011-01-11 00:00:00+00:00          0.00735141         0.00611644   \n",
       "2011-01-12 00:00:00+00:00          0.02718194         0.00438630   \n",
       "2011-01-13 00:00:00+00:00          0.00054651        -0.01823475   \n",
       "2011-01-14 00:00:00+00:00         -0.00028748         0.02649446   \n",
       "2011-01-18 00:00:00+00:00          0.01158879         0.00604402   \n",
       "2011-01-19 00:00:00+00:00         -0.01989880        -0.01284667   \n",
       "2011-01-20 00:00:00+00:00         -0.00084112        -0.03379775   \n",
       "2011-01-21 00:00:00+00:00         -0.00304798        -0.00087153   \n",
       "2011-01-24 00:00:00+00:00          0.00165968         0.00804885   \n",
       "2011-01-25 00:00:00+00:00          0.00113369         0.01514317   \n",
       "2011-01-26 00:00:00+00:00          0.00055168        -0.07629122   \n",
       "2011-01-27 00:00:00+00:00          0.01639630         0.02466443   \n",
       "2011-01-28 00:00:00+00:00         -0.02187072        -0.02222859   \n",
       "2011-01-31 00:00:00+00:00         -0.00756028         0.00661503   \n",
       "2011-02-01 00:00:00+00:00          0.02479485         0.02449777   \n",
       "2011-02-02 00:00:00+00:00         -0.01038976        -0.00182689   \n",
       "2011-02-03 00:00:00+00:00          0.00855568         0.00459592   \n",
       "2011-02-04 00:00:00+00:00          0.00304817        -0.00550607   \n",
       "2011-02-07 00:00:00+00:00          0.00685187         0.00276828   \n",
       "2011-02-08 00:00:00+00:00          0.00518223        -0.00276064   \n",
       "2011-02-09 00:00:00+00:00         -0.01844088         0.00370461   \n",
       "2011-02-10 00:00:00+00:00          0.00551211        -0.00462381   \n",
       "2011-02-11 00:00:00+00:00          0.00714655         0.01202070   \n",
       "2011-02-14 00:00:00+00:00         -0.00544299         0.00547592   \n",
       "2011-02-15 00:00:00+00:00          0.00409742         0.00360404   \n",
       "2011-02-16 00:00:00+00:00          0.00028536         0.02709281   \n",
       "2011-02-17 00:00:00+00:00         -0.00191139         0.00000000   \n",
       "2011-02-18 00:00:00+00:00          0.01314812        -0.00438988   \n",
       "...                                       ...                ...   \n",
       "2015-11-20 00:00:00+00:00          0.00279330         0.00289932   \n",
       "2015-11-23 00:00:00+00:00          0.00734514         0.02769219   \n",
       "2015-11-24 00:00:00+00:00         -0.00956300        -0.01299182   \n",
       "2015-11-25 00:00:00+00:00         -0.00279190        -0.00191255   \n",
       "2015-11-27 00:00:00+00:00          0.00263307         0.00379485   \n",
       "2015-11-30 00:00:00+00:00         -0.00736321        -0.00752358   \n",
       "2015-12-01 00:00:00+00:00          0.02160044         0.01327550   \n",
       "2015-12-02 00:00:00+00:00          0.00757240        -0.02996241   \n",
       "2015-12-03 00:00:00+00:00          0.00273291        -0.00095925   \n",
       "2015-12-04 00:00:00+00:00          0.00749501         0.01159888   \n",
       "2015-12-07 00:00:00+00:00         -0.00190007        -0.02957591   \n",
       "2015-12-08 00:00:00+00:00         -0.01206744        -0.00492958   \n",
       "2015-12-09 00:00:00+00:00         -0.02106570        -0.00986868   \n",
       "2015-12-10 00:00:00+00:00         -0.00031695         0.01497042   \n",
       "2015-12-11 00:00:00+00:00         -0.01775464        -0.01279343   \n",
       "2015-12-14 00:00:00+00:00         -0.00183474        -0.01791305   \n",
       "2015-12-15 00:00:00+00:00          0.00435700         0.01622211   \n",
       "2015-12-16 00:00:00+00:00          0.00850674         0.02493746   \n",
       "2015-12-17 00:00:00+00:00         -0.00314212        -0.00778738   \n",
       "2015-12-18 00:00:00+00:00         -0.01045055        -0.00394377   \n",
       "2015-12-21 00:00:00+00:00          0.00703494         0.01477910   \n",
       "2015-12-22 00:00:00+00:00          0.01004736         0.03886271   \n",
       "2015-12-23 00:00:00+00:00          0.00758616         0.01119292   \n",
       "2015-12-24 00:00:00+00:00         -0.00212741         0.00555290   \n",
       "2015-12-28 00:00:00+00:00          0.00493013        -0.02113809   \n",
       "2015-12-29 00:00:00+00:00          0.01143615         0.01128297   \n",
       "2015-12-30 00:00:00+00:00         -0.00807866         0.00184720   \n",
       "2015-12-31 00:00:00+00:00         -0.00911914        -0.00837082   \n",
       "2016-01-04 00:00:00+00:00         -0.03271090        -0.03105128   \n",
       "2016-01-05 00:00:00+00:00          0.02039022        -0.00195732   \n",
       "\n",
       "                           Equity(486 [XYL])  Equity(487 [YUM])  \\\n",
       "2011-01-07 00:00:00+00:00         0.00000000         0.01245693   \n",
       "2011-01-10 00:00:00+00:00         0.00000000         0.00143979   \n",
       "2011-01-11 00:00:00+00:00         0.00000000        -0.00646974   \n",
       "2011-01-12 00:00:00+00:00         0.00000000         0.00263106   \n",
       "2011-01-13 00:00:00+00:00         0.00000000        -0.00508430   \n",
       "2011-01-14 00:00:00+00:00         0.00000000        -0.02166101   \n",
       "2011-01-18 00:00:00+00:00         0.00000000         0.02945339   \n",
       "2011-01-19 00:00:00+00:00         0.00000000         0.00081838   \n",
       "2011-01-20 00:00:00+00:00         0.00000000        -0.01318157   \n",
       "2011-01-21 00:00:00+00:00         0.00000000        -0.00759032   \n",
       "2011-01-24 00:00:00+00:00         0.00000000         0.00060118   \n",
       "2011-01-25 00:00:00+00:00         0.00000000        -0.00620848   \n",
       "2011-01-26 00:00:00+00:00         0.00000000        -0.00480301   \n",
       "2011-01-27 00:00:00+00:00         0.00000000        -0.00374620   \n",
       "2011-01-28 00:00:00+00:00         0.00000000        -0.02500085   \n",
       "2011-01-31 00:00:00+00:00         0.00000000         0.00774817   \n",
       "2011-02-01 00:00:00+00:00         0.00000000         0.01410150   \n",
       "2011-02-02 00:00:00+00:00         0.00000000         0.00656172   \n",
       "2011-02-03 00:00:00+00:00         0.00000000         0.03141255   \n",
       "2011-02-04 00:00:00+00:00         0.00000000         0.00140817   \n",
       "2011-02-07 00:00:00+00:00         0.00000000         0.00202754   \n",
       "2011-02-08 00:00:00+00:00         0.00000000         0.00385105   \n",
       "2011-02-09 00:00:00+00:00         0.00000000        -0.00182061   \n",
       "2011-02-10 00:00:00+00:00         0.00000000         0.00485295   \n",
       "2011-02-11 00:00:00+00:00         0.00000000         0.00061584   \n",
       "2011-02-14 00:00:00+00:00         0.00000000         0.01065725   \n",
       "2011-02-15 00:00:00+00:00         0.00000000         0.00852564   \n",
       "2011-02-16 00:00:00+00:00         0.00000000         0.00889849   \n",
       "2011-02-17 00:00:00+00:00         0.00000000         0.00390600   \n",
       "2011-02-18 00:00:00+00:00         0.00000000        -0.00411045   \n",
       "...                                      ...                ...   \n",
       "2015-11-20 00:00:00+00:00        -0.00449783         0.01505987   \n",
       "2015-11-23 00:00:00+00:00         0.00132239        -0.00096628   \n",
       "2015-11-24 00:00:00+00:00        -0.00187091        -0.00425172   \n",
       "2015-11-25 00:00:00+00:00         0.00482386         0.00289380   \n",
       "2015-11-27 00:00:00+00:00        -0.00213974         0.00510503   \n",
       "2015-11-30 00:00:00+00:00        -0.00692784        -0.00618325   \n",
       "2015-12-01 00:00:00+00:00         0.00858179         0.02716952   \n",
       "2015-12-02 00:00:00+00:00        -0.01833503         0.00631281   \n",
       "2015-12-03 00:00:00+00:00        -0.00567594        -0.02427203   \n",
       "2015-12-04 00:00:00+00:00         0.02477363         0.04115927   \n",
       "2015-12-07 00:00:00+00:00        -0.01964712         0.00353962   \n",
       "2015-12-08 00:00:00+00:00        -0.01707392        -0.01073476   \n",
       "2015-12-09 00:00:00+00:00        -0.00056952        -0.02367896   \n",
       "2015-12-10 00:00:00+00:00         0.01213779        -0.00825643   \n",
       "2015-12-11 00:00:00+00:00        -0.01306196        -0.02583602   \n",
       "2015-12-14 00:00:00+00:00         0.01158048         0.00490982   \n",
       "2015-12-15 00:00:00+00:00         0.00163542         0.01341047   \n",
       "2015-12-16 00:00:00+00:00         0.02071897         0.01280939   \n",
       "2015-12-17 00:00:00+00:00        -0.02669682        -0.01822419   \n",
       "2015-12-18 00:00:00+00:00        -0.01700150        -0.00499057   \n",
       "2015-12-21 00:00:00+00:00         0.00835952         0.02171387   \n",
       "2015-12-22 00:00:00+00:00         0.00997684        -0.00544780   \n",
       "2015-12-23 00:00:00+00:00         0.01723748         0.01534943   \n",
       "2015-12-24 00:00:00+00:00        -0.00161385        -0.00162043   \n",
       "2015-12-28 00:00:00+00:00        -0.00348374        -0.00217727   \n",
       "2015-12-29 00:00:00+00:00         0.00430697         0.00541538   \n",
       "2015-12-30 00:00:00+00:00        -0.00618212        -0.00578080   \n",
       "2015-12-31 00:00:00+00:00        -0.01003138        -0.01029925   \n",
       "2016-01-04 00:00:00+00:00        -0.01151995        -0.01148918   \n",
       "2016-01-05 00:00:00+00:00        -0.00028634        -0.00249493   \n",
       "\n",
       "                           Equity(488 [ZBH])  Equity(489 [ZION])  \\\n",
       "2011-01-07 00:00:00+00:00        -0.00018145         -0.01045802   \n",
       "2011-01-10 00:00:00+00:00         0.00778351         -0.01794496   \n",
       "2011-01-11 00:00:00+00:00         0.03567570          0.00746728   \n",
       "2011-01-12 00:00:00+00:00         0.01474083         -0.01190269   \n",
       "2011-01-13 00:00:00+00:00        -0.00466453         -0.00917796   \n",
       "2011-01-14 00:00:00+00:00         0.00594885          0.03317747   \n",
       "2011-01-18 00:00:00+00:00         0.00699753         -0.00853448   \n",
       "2011-01-19 00:00:00+00:00        -0.00409759         -0.01843318   \n",
       "2011-01-20 00:00:00+00:00        -0.00161165         -0.00797236   \n",
       "2011-01-21 00:00:00+00:00         0.00932467          0.02402000   \n",
       "2011-01-24 00:00:00+00:00        -0.01650140         -0.02302058   \n",
       "2011-01-25 00:00:00+00:00         0.01714176         -0.00883613   \n",
       "2011-01-26 00:00:00+00:00        -0.01952376         -0.01062584   \n",
       "2011-01-27 00:00:00+00:00         0.06875384          0.02016019   \n",
       "2011-01-28 00:00:00+00:00        -0.00847214         -0.01387340   \n",
       "2011-01-31 00:00:00+00:00         0.00990224          0.00637836   \n",
       "2011-02-01 00:00:00+00:00         0.01774607          0.03097047   \n",
       "2011-02-02 00:00:00+00:00         0.00516054         -0.00370596   \n",
       "2011-02-03 00:00:00+00:00        -0.00033292         -0.00039386   \n",
       "2011-02-04 00:00:00+00:00         0.00247147          0.01611067   \n",
       "2011-02-07 00:00:00+00:00        -0.01087565          0.02761741   \n",
       "2011-02-08 00:00:00+00:00        -0.00049496          0.00477967   \n",
       "2011-02-09 00:00:00+00:00        -0.00985108         -0.00475694   \n",
       "2011-02-10 00:00:00+00:00         0.01144950         -0.02649784   \n",
       "2011-02-11 00:00:00+00:00         0.00965987          0.01425557   \n",
       "2011-02-14 00:00:00+00:00         0.00248369         -0.01002123   \n",
       "2011-02-15 00:00:00+00:00        -0.00181453         -0.00446084   \n",
       "2011-02-16 00:00:00+00:00         0.01055741          0.00120638   \n",
       "2011-02-17 00:00:00+00:00         0.01532474         -0.00322747   \n",
       "2011-02-18 00:00:00+00:00         0.02378154         -0.01795968   \n",
       "...                                      ...                 ...   \n",
       "2015-11-20 00:00:00+00:00        -0.00317570          0.00000000   \n",
       "2015-11-23 00:00:00+00:00        -0.00858098         -0.00199203   \n",
       "2015-11-24 00:00:00+00:00        -0.00904325          0.00264987   \n",
       "2015-11-25 00:00:00+00:00        -0.00617420         -0.00030891   \n",
       "2015-11-27 00:00:00+00:00        -0.00286889          0.00501270   \n",
       "2015-11-30 00:00:00+00:00         0.00010131         -0.00433862   \n",
       "2015-12-01 00:00:00+00:00         0.01692683          0.01502831   \n",
       "2015-12-02 00:00:00+00:00        -0.00447256         -0.01544806   \n",
       "2015-12-03 00:00:00+00:00        -0.02836674         -0.01572478   \n",
       "2015-12-04 00:00:00+00:00         0.01197660          0.02445235   \n",
       "2015-12-07 00:00:00+00:00        -0.00138396         -0.04208519   \n",
       "2015-12-08 00:00:00+00:00        -0.00627720         -0.03181317   \n",
       "2015-12-09 00:00:00+00:00         0.00220474         -0.00748954   \n",
       "2015-12-10 00:00:00+00:00        -0.00029673          0.01475919   \n",
       "2015-12-11 00:00:00+00:00        -0.01011228         -0.02978165   \n",
       "2015-12-14 00:00:00+00:00         0.00535594         -0.01499098   \n",
       "2015-12-15 00:00:00+00:00         0.01578682          0.03562574   \n",
       "2015-12-16 00:00:00+00:00         0.00860603          0.01075467   \n",
       "2015-12-17 00:00:00+00:00        -0.01196571         -0.01596035   \n",
       "2015-12-18 00:00:00+00:00        -0.01738362         -0.03784484   \n",
       "2015-12-21 00:00:00+00:00         0.01284185          0.00227072   \n",
       "2015-12-22 00:00:00+00:00         0.01496575          0.01455341   \n",
       "2015-12-23 00:00:00+00:00         0.01021896          0.01877295   \n",
       "2015-12-24 00:00:00+00:00         0.00136401          0.00397518   \n",
       "2015-12-28 00:00:00+00:00        -0.00641306         -0.00503256   \n",
       "2015-12-29 00:00:00+00:00         0.00723499          0.00617376   \n",
       "2015-12-30 00:00:00+00:00        -0.00292090         -0.01223479   \n",
       "2015-12-31 00:00:00+00:00         0.00117577         -0.00621188   \n",
       "2016-01-04 00:00:00+00:00        -0.00760365         -0.02161389   \n",
       "2016-01-05 00:00:00+00:00         0.02081954         -0.01085325   \n",
       "\n",
       "                           Equity(490 [ZTS])  \n",
       "2011-01-07 00:00:00+00:00         0.00000000  \n",
       "2011-01-10 00:00:00+00:00         0.00000000  \n",
       "2011-01-11 00:00:00+00:00         0.00000000  \n",
       "2011-01-12 00:00:00+00:00         0.00000000  \n",
       "2011-01-13 00:00:00+00:00         0.00000000  \n",
       "2011-01-14 00:00:00+00:00         0.00000000  \n",
       "2011-01-18 00:00:00+00:00         0.00000000  \n",
       "2011-01-19 00:00:00+00:00         0.00000000  \n",
       "2011-01-20 00:00:00+00:00         0.00000000  \n",
       "2011-01-21 00:00:00+00:00         0.00000000  \n",
       "2011-01-24 00:00:00+00:00         0.00000000  \n",
       "2011-01-25 00:00:00+00:00         0.00000000  \n",
       "2011-01-26 00:00:00+00:00         0.00000000  \n",
       "2011-01-27 00:00:00+00:00         0.00000000  \n",
       "2011-01-28 00:00:00+00:00         0.00000000  \n",
       "2011-01-31 00:00:00+00:00         0.00000000  \n",
       "2011-02-01 00:00:00+00:00         0.00000000  \n",
       "2011-02-02 00:00:00+00:00         0.00000000  \n",
       "2011-02-03 00:00:00+00:00         0.00000000  \n",
       "2011-02-04 00:00:00+00:00         0.00000000  \n",
       "2011-02-07 00:00:00+00:00         0.00000000  \n",
       "2011-02-08 00:00:00+00:00         0.00000000  \n",
       "2011-02-09 00:00:00+00:00         0.00000000  \n",
       "2011-02-10 00:00:00+00:00         0.00000000  \n",
       "2011-02-11 00:00:00+00:00         0.00000000  \n",
       "2011-02-14 00:00:00+00:00         0.00000000  \n",
       "2011-02-15 00:00:00+00:00         0.00000000  \n",
       "2011-02-16 00:00:00+00:00         0.00000000  \n",
       "2011-02-17 00:00:00+00:00         0.00000000  \n",
       "2011-02-18 00:00:00+00:00         0.00000000  \n",
       "...                                      ...  \n",
       "2015-11-20 00:00:00+00:00         0.00894971  \n",
       "2015-11-23 00:00:00+00:00        -0.00760006  \n",
       "2015-11-24 00:00:00+00:00        -0.00065084  \n",
       "2015-11-25 00:00:00+00:00         0.00086836  \n",
       "2015-11-27 00:00:00+00:00         0.00234253  \n",
       "2015-11-30 00:00:00+00:00        -0.00807150  \n",
       "2015-12-01 00:00:00+00:00         0.00663191  \n",
       "2015-12-02 00:00:00+00:00        -0.01360986  \n",
       "2015-12-03 00:00:00+00:00        -0.02524442  \n",
       "2015-12-04 00:00:00+00:00         0.02788171  \n",
       "2015-12-07 00:00:00+00:00        -0.01184133  \n",
       "2015-12-08 00:00:00+00:00         0.00066573  \n",
       "2015-12-09 00:00:00+00:00        -0.01590047  \n",
       "2015-12-10 00:00:00+00:00         0.01969533  \n",
       "2015-12-11 00:00:00+00:00        -0.00585635  \n",
       "2015-12-14 00:00:00+00:00         0.01658331  \n",
       "2015-12-15 00:00:00+00:00         0.00815639  \n",
       "2015-12-16 00:00:00+00:00         0.00253774  \n",
       "2015-12-17 00:00:00+00:00        -0.00763722  \n",
       "2015-12-18 00:00:00+00:00        -0.00279062  \n",
       "2015-12-21 00:00:00+00:00         0.01589418  \n",
       "2015-12-22 00:00:00+00:00         0.00802720  \n",
       "2015-12-23 00:00:00+00:00         0.00544406  \n",
       "2015-12-24 00:00:00+00:00         0.00312135  \n",
       "2015-12-28 00:00:00+00:00        -0.00478388  \n",
       "2015-12-29 00:00:00+00:00         0.00899694  \n",
       "2015-12-30 00:00:00+00:00        -0.00145450  \n",
       "2015-12-31 00:00:00+00:00        -0.00705088  \n",
       "2016-01-04 00:00:00+00:00        -0.01356408  \n",
       "2016-01-05 00:00:00+00:00         0.01564723  \n",
       "\n",
       "[1256 rows x 490 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "five_year_returns = \\\n",
    "    get_pricing(\n",
    "        data_portal,\n",
    "        trading_calendar,\n",
    "        universe_tickers,\n",
    "        universe_end_date - pd.DateOffset(years=5),\n",
    "        universe_end_date)\\\n",
    "    .pct_change()[1:].fillna(0)\n",
    "\n",
    "five_year_returns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Statistical Risk Model\n",
    "It's time to build the risk model. You'll be creating a statistical risk model using PCA. So, the first thing is building the PCA model.\n",
    "## Fit PCA\n",
    "Implement `fit_pca` to fit a PCA model to the returns data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "\n",
    "def fit_pca(returns, num_factor_exposures, svd_solver):\n",
    "    \"\"\"\n",
    "    Fit PCA model with returns.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    returns : DataFrame\n",
    "        Returns for each ticker and date\n",
    "    num_factor_exposures : int\n",
    "        Number of factors for PCA\n",
    "    svd_solver: str\n",
    "        The solver to use for the PCA model\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    pca : PCA\n",
    "        Model fit to returns\n",
    "    \"\"\"\n",
    "    return PCA(n_components=num_factor_exposures,svd_solver=svd_solver).fit(returns)\n",
    "\n",
    "project_tests.test_fit_pca(fit_pca)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's see what the model looks like. First, we'll look at the PCA components."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.04316847, -0.05874471, -0.03433256, ..., -0.03843904,\n",
       "        -0.06092493, -0.01367163],\n",
       "       [ 0.01955111,  0.19637679,  0.03451503, ...,  0.01749339,\n",
       "        -0.01044197,  0.01892192],\n",
       "       [-0.00993375,  0.07868756,  0.01133839, ..., -0.0157519 ,\n",
       "         0.01261759,  0.01867875],\n",
       "       ...,\n",
       "       [-0.01174265,  0.01398085,  0.05143999, ...,  0.04125323,\n",
       "         0.0035229 ,  0.03682367],\n",
       "       [ 0.00526925, -0.04680674,  0.05716915, ...,  0.00671842,\n",
       "        -0.02193923,  0.00833979],\n",
       "       [-0.00535269, -0.01599057,  0.08414961, ..., -0.01540844,\n",
       "         0.02188794,  0.01500221]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_factor_exposures = 20\n",
    "pca = fit_pca(five_year_returns, num_factor_exposures, 'full')\n",
    "\n",
    "pca.components_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's also look at the PCA's percent of variance explained by each factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Container object of 20 artists>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54f2b1b320>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(np.arange(num_factor_exposures), pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You will see that the first factor dominates. The precise definition of each factor in a latent model is unknown, however we can guess at the likely interpretation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Factor Betas\n",
    "Implement `factor_betas` to get the factor betas from the PCA model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def factor_betas(pca, factor_beta_indices, factor_beta_columns):\n",
    "    \"\"\"\n",
    "    Get the factor betas from the PCA model.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    pca : PCA\n",
    "        Model fit to returns\n",
    "    factor_beta_indices : 1 dimensional Ndarray\n",
    "        Factor beta indices\n",
    "    factor_beta_columns : 1 dimensional Ndarray\n",
    "        Factor beta columns\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    factor_betas : DataFrame\n",
    "        Factor betas\n",
    "    \"\"\"\n",
    "    assert len(factor_beta_indices.shape) == 1\n",
    "    assert len(factor_beta_columns.shape) == 1\n",
    "    \n",
    "    return pd.DataFrame(pca.components_.T,factor_beta_indices,factor_beta_columns)\n",
    "\n",
    "\n",
    "project_tests.test_factor_betas(factor_betas)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's view the factor betas from this model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "      <th>14</th>\n",
       "      <th>15</th>\n",
       "      <th>16</th>\n",
       "      <th>17</th>\n",
       "      <th>18</th>\n",
       "      <th>19</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>-0.04316847</td>\n",
       "      <td>0.01955111</td>\n",
       "      <td>-0.00993375</td>\n",
       "      <td>0.01054038</td>\n",
       "      <td>-0.01819821</td>\n",
       "      <td>0.01074517</td>\n",
       "      <td>0.00112915</td>\n",
       "      <td>0.03973914</td>\n",
       "      <td>-0.01380519</td>\n",
       "      <td>0.01273651</td>\n",
       "      <td>-0.02384028</td>\n",
       "      <td>-0.00141663</td>\n",
       "      <td>0.02099338</td>\n",
       "      <td>0.03460997</td>\n",
       "      <td>-0.03048936</td>\n",
       "      <td>0.03360635</td>\n",
       "      <td>-0.01142920</td>\n",
       "      <td>-0.01174265</td>\n",
       "      <td>0.00526925</td>\n",
       "      <td>-0.00535269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>-0.05874471</td>\n",
       "      <td>0.19637679</td>\n",
       "      <td>0.07868756</td>\n",
       "      <td>0.08209582</td>\n",
       "      <td>0.34847826</td>\n",
       "      <td>-0.13808246</td>\n",
       "      <td>0.07129285</td>\n",
       "      <td>0.10524788</td>\n",
       "      <td>-0.04588957</td>\n",
       "      <td>-0.08547793</td>\n",
       "      <td>0.00328328</td>\n",
       "      <td>0.10534284</td>\n",
       "      <td>0.06721603</td>\n",
       "      <td>-0.04405955</td>\n",
       "      <td>-0.02231617</td>\n",
       "      <td>0.01726309</td>\n",
       "      <td>-0.03310836</td>\n",
       "      <td>0.01398085</td>\n",
       "      <td>-0.04680674</td>\n",
       "      <td>-0.01599057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>-0.03433256</td>\n",
       "      <td>0.03451503</td>\n",
       "      <td>0.01133839</td>\n",
       "      <td>-0.02543666</td>\n",
       "      <td>-0.00817211</td>\n",
       "      <td>-0.01318319</td>\n",
       "      <td>-0.06095238</td>\n",
       "      <td>0.00654915</td>\n",
       "      <td>-0.03265404</td>\n",
       "      <td>-0.01351522</td>\n",
       "      <td>0.02896685</td>\n",
       "      <td>0.03836520</td>\n",
       "      <td>-0.04960451</td>\n",
       "      <td>-0.00524576</td>\n",
       "      <td>-0.02196994</td>\n",
       "      <td>0.02976718</td>\n",
       "      <td>-0.01163585</td>\n",
       "      <td>0.05143999</td>\n",
       "      <td>0.05716915</td>\n",
       "      <td>0.08414961</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>-0.03409988</td>\n",
       "      <td>-0.00139319</td>\n",
       "      <td>0.03946700</td>\n",
       "      <td>-0.01721303</td>\n",
       "      <td>-0.03046983</td>\n",
       "      <td>-0.01757067</td>\n",
       "      <td>0.02325117</td>\n",
       "      <td>0.01142987</td>\n",
       "      <td>-0.02656849</td>\n",
       "      <td>-0.00771904</td>\n",
       "      <td>0.02686350</td>\n",
       "      <td>0.00731877</td>\n",
       "      <td>0.00481832</td>\n",
       "      <td>0.01288623</td>\n",
       "      <td>0.05256513</td>\n",
       "      <td>-0.07344470</td>\n",
       "      <td>-0.03179158</td>\n",
       "      <td>0.09079374</td>\n",
       "      <td>-0.01118851</td>\n",
       "      <td>0.04291373</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>-0.01803099</td>\n",
       "      <td>0.02568151</td>\n",
       "      <td>0.00435183</td>\n",
       "      <td>-0.07078179</td>\n",
       "      <td>0.01319937</td>\n",
       "      <td>0.05427710</td>\n",
       "      <td>-0.01567842</td>\n",
       "      <td>0.04046172</td>\n",
       "      <td>-0.01245487</td>\n",
       "      <td>-0.03515086</td>\n",
       "      <td>-0.05132433</td>\n",
       "      <td>-0.04041614</td>\n",
       "      <td>-0.05120320</td>\n",
       "      <td>-0.01858166</td>\n",
       "      <td>-0.01126857</td>\n",
       "      <td>-0.04200714</td>\n",
       "      <td>0.01588559</td>\n",
       "      <td>0.04598554</td>\n",
       "      <td>0.01599288</td>\n",
       "      <td>0.06587978</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <td>-0.02890016</td>\n",
       "      <td>0.03259161</td>\n",
       "      <td>-0.00742074</td>\n",
       "      <td>-0.03355183</td>\n",
       "      <td>-0.01152149</td>\n",
       "      <td>0.02648421</td>\n",
       "      <td>0.01084965</td>\n",
       "      <td>-0.00570393</td>\n",
       "      <td>0.01354800</td>\n",
       "      <td>-0.02967931</td>\n",
       "      <td>-0.03161765</td>\n",
       "      <td>0.01715152</td>\n",
       "      <td>-0.00304998</td>\n",
       "      <td>0.02635564</td>\n",
       "      <td>0.00787900</td>\n",
       "      <td>0.00833106</td>\n",
       "      <td>-0.01834622</td>\n",
       "      <td>-0.01391370</td>\n",
       "      <td>0.01062042</td>\n",
       "      <td>-0.02739565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <td>-0.02905740</td>\n",
       "      <td>0.02977821</td>\n",
       "      <td>-0.02970871</td>\n",
       "      <td>-0.03574263</td>\n",
       "      <td>-0.01157351</td>\n",
       "      <td>0.06020073</td>\n",
       "      <td>-0.02004042</td>\n",
       "      <td>0.04098522</td>\n",
       "      <td>-0.01803987</td>\n",
       "      <td>-0.00620785</td>\n",
       "      <td>-0.03157790</td>\n",
       "      <td>-0.02308041</td>\n",
       "      <td>-0.01436789</td>\n",
       "      <td>-0.00054254</td>\n",
       "      <td>-0.01932887</td>\n",
       "      <td>0.01428819</td>\n",
       "      <td>-0.03938064</td>\n",
       "      <td>0.01071208</td>\n",
       "      <td>0.01712006</td>\n",
       "      <td>0.00210689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <td>-0.04337745</td>\n",
       "      <td>0.00256907</td>\n",
       "      <td>0.00413229</td>\n",
       "      <td>-0.00349265</td>\n",
       "      <td>-0.05430743</td>\n",
       "      <td>0.00537434</td>\n",
       "      <td>0.00277996</td>\n",
       "      <td>0.03043220</td>\n",
       "      <td>-0.01880168</td>\n",
       "      <td>-0.00178336</td>\n",
       "      <td>-0.03540357</td>\n",
       "      <td>-0.01093170</td>\n",
       "      <td>0.02611241</td>\n",
       "      <td>-0.01233115</td>\n",
       "      <td>0.00322097</td>\n",
       "      <td>0.01770011</td>\n",
       "      <td>-0.00285123</td>\n",
       "      <td>-0.01235874</td>\n",
       "      <td>-0.01400935</td>\n",
       "      <td>-0.03855653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <td>-0.04730285</td>\n",
       "      <td>0.02661175</td>\n",
       "      <td>0.03057072</td>\n",
       "      <td>-0.02114690</td>\n",
       "      <td>-0.04838794</td>\n",
       "      <td>-0.00708698</td>\n",
       "      <td>0.00743385</td>\n",
       "      <td>0.00747095</td>\n",
       "      <td>0.01487098</td>\n",
       "      <td>-0.00153422</td>\n",
       "      <td>-0.01238383</td>\n",
       "      <td>-0.00667442</td>\n",
       "      <td>0.03500718</td>\n",
       "      <td>-0.04336579</td>\n",
       "      <td>0.01060255</td>\n",
       "      <td>-0.00637875</td>\n",
       "      <td>0.02127339</td>\n",
       "      <td>-0.03638845</td>\n",
       "      <td>0.00126811</td>\n",
       "      <td>-0.04844555</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <td>-0.04712287</td>\n",
       "      <td>-0.00381150</td>\n",
       "      <td>0.05600847</td>\n",
       "      <td>-0.01553775</td>\n",
       "      <td>-0.06946243</td>\n",
       "      <td>-0.00560418</td>\n",
       "      <td>0.10070366</td>\n",
       "      <td>0.06307694</td>\n",
       "      <td>0.00160769</td>\n",
       "      <td>0.01912993</td>\n",
       "      <td>0.01101680</td>\n",
       "      <td>0.00348733</td>\n",
       "      <td>-0.05465749</td>\n",
       "      <td>-0.04223802</td>\n",
       "      <td>-0.00014275</td>\n",
       "      <td>-0.04843166</td>\n",
       "      <td>0.00374282</td>\n",
       "      <td>0.04583322</td>\n",
       "      <td>0.01483456</td>\n",
       "      <td>0.00768623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(10 [ADM])</th>\n",
       "      <td>-0.04375945</td>\n",
       "      <td>-0.01130045</td>\n",
       "      <td>-0.03457005</td>\n",
       "      <td>0.00400541</td>\n",
       "      <td>-0.00645333</td>\n",
       "      <td>0.01746845</td>\n",
       "      <td>-0.00146122</td>\n",
       "      <td>0.04177642</td>\n",
       "      <td>-0.00478644</td>\n",
       "      <td>-0.01859623</td>\n",
       "      <td>0.00422432</td>\n",
       "      <td>-0.00952513</td>\n",
       "      <td>-0.01336835</td>\n",
       "      <td>0.01753074</td>\n",
       "      <td>0.00993158</td>\n",
       "      <td>0.02405739</td>\n",
       "      <td>-0.02009143</td>\n",
       "      <td>-0.00246866</td>\n",
       "      <td>0.00264238</td>\n",
       "      <td>-0.00851815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(11 [ADP])</th>\n",
       "      <td>-0.03648136</td>\n",
       "      <td>0.02528125</td>\n",
       "      <td>-0.01114832</td>\n",
       "      <td>-0.00940984</td>\n",
       "      <td>-0.03357614</td>\n",
       "      <td>0.02887659</td>\n",
       "      <td>-0.00509280</td>\n",
       "      <td>0.04466799</td>\n",
       "      <td>-0.00676480</td>\n",
       "      <td>0.00335015</td>\n",
       "      <td>-0.00493401</td>\n",
       "      <td>0.00194010</td>\n",
       "      <td>-0.01057350</td>\n",
       "      <td>-0.00616905</td>\n",
       "      <td>-0.00351046</td>\n",
       "      <td>-0.00218630</td>\n",
       "      <td>-0.00363522</td>\n",
       "      <td>0.00584571</td>\n",
       "      <td>0.00578868</td>\n",
       "      <td>-0.02465380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(12 [ADS])</th>\n",
       "      <td>-0.04136654</td>\n",
       "      <td>0.01659887</td>\n",
       "      <td>0.01716323</td>\n",
       "      <td>-0.02418717</td>\n",
       "      <td>-0.00389740</td>\n",
       "      <td>0.00098181</td>\n",
       "      <td>-0.02299563</td>\n",
       "      <td>0.01316338</td>\n",
       "      <td>-0.02790599</td>\n",
       "      <td>0.00654660</td>\n",
       "      <td>0.00628604</td>\n",
       "      <td>-0.00342924</td>\n",
       "      <td>0.01596979</td>\n",
       "      <td>-0.02290249</td>\n",
       "      <td>0.01812681</td>\n",
       "      <td>0.00269984</td>\n",
       "      <td>-0.01166061</td>\n",
       "      <td>-0.02387829</td>\n",
       "      <td>-0.01844799</td>\n",
       "      <td>0.02639087</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(13 [ADSK])</th>\n",
       "      <td>-0.06028785</td>\n",
       "      <td>0.01995266</td>\n",
       "      <td>0.05164356</td>\n",
       "      <td>0.00105689</td>\n",
       "      <td>-0.06889175</td>\n",
       "      <td>-0.04893180</td>\n",
       "      <td>0.04706144</td>\n",
       "      <td>-0.02746946</td>\n",
       "      <td>0.00290438</td>\n",
       "      <td>0.00534281</td>\n",
       "      <td>-0.01150281</td>\n",
       "      <td>-0.00105789</td>\n",
       "      <td>0.04046916</td>\n",
       "      <td>-0.03266419</td>\n",
       "      <td>0.02070996</td>\n",
       "      <td>0.02100687</td>\n",
       "      <td>0.05625388</td>\n",
       "      <td>-0.06442852</td>\n",
       "      <td>-0.03374250</td>\n",
       "      <td>-0.02718282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(14 [AEE])</th>\n",
       "      <td>-0.02646901</td>\n",
       "      <td>0.02222316</td>\n",
       "      <td>-0.10714999</td>\n",
       "      <td>-0.03824488</td>\n",
       "      <td>-0.00157895</td>\n",
       "      <td>-0.02310383</td>\n",
       "      <td>0.02412315</td>\n",
       "      <td>0.04419314</td>\n",
       "      <td>0.00041473</td>\n",
       "      <td>-0.02597657</td>\n",
       "      <td>0.02325386</td>\n",
       "      <td>-0.05456489</td>\n",
       "      <td>0.00729924</td>\n",
       "      <td>-0.00884432</td>\n",
       "      <td>0.02876494</td>\n",
       "      <td>0.02575176</td>\n",
       "      <td>0.03531642</td>\n",
       "      <td>-0.00801202</td>\n",
       "      <td>-0.03297087</td>\n",
       "      <td>-0.03074790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(15 [AEP])</th>\n",
       "      <td>-0.02263370</td>\n",
       "      <td>0.01880106</td>\n",
       "      <td>-0.10030310</td>\n",
       "      <td>-0.04210462</td>\n",
       "      <td>0.00205558</td>\n",
       "      <td>-0.03150526</td>\n",
       "      <td>0.02496444</td>\n",
       "      <td>0.05473617</td>\n",
       "      <td>0.00166554</td>\n",
       "      <td>-0.02261936</td>\n",
       "      <td>0.01766823</td>\n",
       "      <td>-0.04791054</td>\n",
       "      <td>-0.01334963</td>\n",
       "      <td>-0.00584932</td>\n",
       "      <td>0.03513664</td>\n",
       "      <td>0.02664964</td>\n",
       "      <td>0.03949487</td>\n",
       "      <td>0.00571290</td>\n",
       "      <td>-0.01621889</td>\n",
       "      <td>-0.01421124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(16 [AES])</th>\n",
       "      <td>-0.04557539</td>\n",
       "      <td>-0.01859287</td>\n",
       "      <td>-0.06960047</td>\n",
       "      <td>-0.02023102</td>\n",
       "      <td>0.01303429</td>\n",
       "      <td>-0.01748403</td>\n",
       "      <td>0.02894033</td>\n",
       "      <td>0.03053573</td>\n",
       "      <td>-0.01228381</td>\n",
       "      <td>-0.02623395</td>\n",
       "      <td>0.00383933</td>\n",
       "      <td>-0.05881947</td>\n",
       "      <td>-0.01427757</td>\n",
       "      <td>0.01071751</td>\n",
       "      <td>0.04800697</td>\n",
       "      <td>0.00823278</td>\n",
       "      <td>0.00968720</td>\n",
       "      <td>-0.02229136</td>\n",
       "      <td>-0.05731240</td>\n",
       "      <td>-0.01503171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(17 [AET])</th>\n",
       "      <td>-0.04072498</td>\n",
       "      <td>0.02731997</td>\n",
       "      <td>-0.00507231</td>\n",
       "      <td>-0.02802199</td>\n",
       "      <td>-0.00180323</td>\n",
       "      <td>0.06383735</td>\n",
       "      <td>0.00044765</td>\n",
       "      <td>-0.03716524</td>\n",
       "      <td>0.00999656</td>\n",
       "      <td>-0.09646860</td>\n",
       "      <td>-0.04571407</td>\n",
       "      <td>0.04559328</td>\n",
       "      <td>-0.08527159</td>\n",
       "      <td>0.06484179</td>\n",
       "      <td>-0.07164819</td>\n",
       "      <td>0.00852602</td>\n",
       "      <td>0.01958565</td>\n",
       "      <td>0.00069996</td>\n",
       "      <td>0.00650320</td>\n",
       "      <td>-0.05091908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(18 [AFL])</th>\n",
       "      <td>-0.05336864</td>\n",
       "      <td>0.00134653</td>\n",
       "      <td>-0.02782496</td>\n",
       "      <td>0.06688998</td>\n",
       "      <td>-0.01355109</td>\n",
       "      <td>0.04111821</td>\n",
       "      <td>-0.00401011</td>\n",
       "      <td>-0.01388700</td>\n",
       "      <td>0.01362724</td>\n",
       "      <td>0.00343990</td>\n",
       "      <td>-0.00993833</td>\n",
       "      <td>-0.00945988</td>\n",
       "      <td>0.01378441</td>\n",
       "      <td>-0.00676370</td>\n",
       "      <td>0.00047075</td>\n",
       "      <td>0.00042919</td>\n",
       "      <td>0.00010718</td>\n",
       "      <td>0.00397769</td>\n",
       "      <td>0.01677661</td>\n",
       "      <td>-0.03209361</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(19 [AGN])</th>\n",
       "      <td>-0.03534102</td>\n",
       "      <td>0.04465091</td>\n",
       "      <td>0.02264084</td>\n",
       "      <td>-0.09556088</td>\n",
       "      <td>0.02867567</td>\n",
       "      <td>0.06515425</td>\n",
       "      <td>-0.02264216</td>\n",
       "      <td>-0.01928860</td>\n",
       "      <td>-0.02379115</td>\n",
       "      <td>-0.02578767</td>\n",
       "      <td>-0.02640179</td>\n",
       "      <td>-0.00734949</td>\n",
       "      <td>-0.01375720</td>\n",
       "      <td>0.01729325</td>\n",
       "      <td>0.00910558</td>\n",
       "      <td>0.01765223</td>\n",
       "      <td>-0.02289392</td>\n",
       "      <td>0.02583835</td>\n",
       "      <td>-0.02092126</td>\n",
       "      <td>0.01964563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(20 [AIG])</th>\n",
       "      <td>-0.05982324</td>\n",
       "      <td>0.00588515</td>\n",
       "      <td>-0.01162873</td>\n",
       "      <td>0.06668318</td>\n",
       "      <td>0.01385338</td>\n",
       "      <td>0.04010201</td>\n",
       "      <td>-0.01874280</td>\n",
       "      <td>-0.02394864</td>\n",
       "      <td>0.01457678</td>\n",
       "      <td>0.02061950</td>\n",
       "      <td>-0.00588748</td>\n",
       "      <td>-0.01886738</td>\n",
       "      <td>-0.00536267</td>\n",
       "      <td>-0.02808023</td>\n",
       "      <td>0.03227634</td>\n",
       "      <td>-0.01100650</td>\n",
       "      <td>-0.00994737</td>\n",
       "      <td>-0.04884961</td>\n",
       "      <td>-0.01447059</td>\n",
       "      <td>-0.00092722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(21 [AIV])</th>\n",
       "      <td>-0.04111735</td>\n",
       "      <td>0.03100207</td>\n",
       "      <td>-0.10211708</td>\n",
       "      <td>-0.00919327</td>\n",
       "      <td>0.01055402</td>\n",
       "      <td>-0.04739093</td>\n",
       "      <td>0.05244727</td>\n",
       "      <td>-0.09495931</td>\n",
       "      <td>0.04963087</td>\n",
       "      <td>0.00394508</td>\n",
       "      <td>0.02486556</td>\n",
       "      <td>0.02540802</td>\n",
       "      <td>0.02094801</td>\n",
       "      <td>-0.04206507</td>\n",
       "      <td>-0.02048654</td>\n",
       "      <td>-0.03732772</td>\n",
       "      <td>-0.01518008</td>\n",
       "      <td>0.02499635</td>\n",
       "      <td>0.04526409</td>\n",
       "      <td>0.06168561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(22 [AIZ])</th>\n",
       "      <td>-0.04150874</td>\n",
       "      <td>0.01695771</td>\n",
       "      <td>-0.03297298</td>\n",
       "      <td>0.04770347</td>\n",
       "      <td>-0.00003273</td>\n",
       "      <td>0.04220872</td>\n",
       "      <td>-0.00295921</td>\n",
       "      <td>0.01717020</td>\n",
       "      <td>0.02192818</td>\n",
       "      <td>-0.01979049</td>\n",
       "      <td>0.00845285</td>\n",
       "      <td>-0.00209358</td>\n",
       "      <td>-0.02121338</td>\n",
       "      <td>-0.01017076</td>\n",
       "      <td>0.02874684</td>\n",
       "      <td>0.01121282</td>\n",
       "      <td>0.00889890</td>\n",
       "      <td>-0.01278457</td>\n",
       "      <td>0.00035505</td>\n",
       "      <td>0.00788631</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(23 [AJG])</th>\n",
       "      <td>-0.03351812</td>\n",
       "      <td>0.01723113</td>\n",
       "      <td>-0.02538602</td>\n",
       "      <td>0.01303842</td>\n",
       "      <td>-0.00670008</td>\n",
       "      <td>0.02117990</td>\n",
       "      <td>-0.01015869</td>\n",
       "      <td>0.00117300</td>\n",
       "      <td>0.00768045</td>\n",
       "      <td>0.00434263</td>\n",
       "      <td>-0.00824876</td>\n",
       "      <td>0.01520847</td>\n",
       "      <td>-0.00142810</td>\n",
       "      <td>-0.00802982</td>\n",
       "      <td>-0.00533986</td>\n",
       "      <td>-0.00140466</td>\n",
       "      <td>-0.00386327</td>\n",
       "      <td>-0.01466289</td>\n",
       "      <td>-0.00523534</td>\n",
       "      <td>0.01165450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(24 [AKAM])</th>\n",
       "      <td>-0.05587884</td>\n",
       "      <td>0.00798596</td>\n",
       "      <td>0.06670064</td>\n",
       "      <td>-0.00705542</td>\n",
       "      <td>-0.05149731</td>\n",
       "      <td>-0.04837770</td>\n",
       "      <td>0.02745032</td>\n",
       "      <td>-0.00620225</td>\n",
       "      <td>0.02668695</td>\n",
       "      <td>-0.01154353</td>\n",
       "      <td>0.00107161</td>\n",
       "      <td>-0.06366032</td>\n",
       "      <td>-0.07429360</td>\n",
       "      <td>0.00240076</td>\n",
       "      <td>0.12416841</td>\n",
       "      <td>0.13836518</td>\n",
       "      <td>0.00667736</td>\n",
       "      <td>0.00052245</td>\n",
       "      <td>-0.00203434</td>\n",
       "      <td>0.04370206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(25 [ALB])</th>\n",
       "      <td>-0.05982022</td>\n",
       "      <td>-0.03657577</td>\n",
       "      <td>0.01798669</td>\n",
       "      <td>0.01363477</td>\n",
       "      <td>-0.01737160</td>\n",
       "      <td>-0.03079886</td>\n",
       "      <td>0.04201500</td>\n",
       "      <td>0.00605395</td>\n",
       "      <td>-0.02047597</td>\n",
       "      <td>0.03736635</td>\n",
       "      <td>-0.00136191</td>\n",
       "      <td>0.01865916</td>\n",
       "      <td>0.04131905</td>\n",
       "      <td>0.09156602</td>\n",
       "      <td>-0.06656052</td>\n",
       "      <td>-0.01740400</td>\n",
       "      <td>-0.04603229</td>\n",
       "      <td>-0.02452548</td>\n",
       "      <td>-0.02975526</td>\n",
       "      <td>0.05708918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(26 [ALGN])</th>\n",
       "      <td>-0.05959262</td>\n",
       "      <td>0.01420686</td>\n",
       "      <td>0.04030645</td>\n",
       "      <td>-0.00223610</td>\n",
       "      <td>0.00381377</td>\n",
       "      <td>0.03559561</td>\n",
       "      <td>0.04027152</td>\n",
       "      <td>-0.09389473</td>\n",
       "      <td>0.03501042</td>\n",
       "      <td>0.00979674</td>\n",
       "      <td>-0.07400799</td>\n",
       "      <td>0.02204550</td>\n",
       "      <td>0.10784517</td>\n",
       "      <td>0.07096981</td>\n",
       "      <td>-0.05965948</td>\n",
       "      <td>-0.06617279</td>\n",
       "      <td>0.04902407</td>\n",
       "      <td>0.00156817</td>\n",
       "      <td>-0.03738565</td>\n",
       "      <td>-0.00223241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(27 [ALK])</th>\n",
       "      <td>-0.04887994</td>\n",
       "      <td>0.12134700</td>\n",
       "      <td>0.03971829</td>\n",
       "      <td>0.02356295</td>\n",
       "      <td>0.12648496</td>\n",
       "      <td>-0.05703822</td>\n",
       "      <td>0.02168427</td>\n",
       "      <td>0.06427147</td>\n",
       "      <td>-0.01679148</td>\n",
       "      <td>-0.02374091</td>\n",
       "      <td>-0.00059277</td>\n",
       "      <td>0.06395819</td>\n",
       "      <td>0.00033085</td>\n",
       "      <td>0.00597074</td>\n",
       "      <td>0.01458408</td>\n",
       "      <td>0.02170190</td>\n",
       "      <td>0.04257028</td>\n",
       "      <td>0.00789058</td>\n",
       "      <td>0.04963085</td>\n",
       "      <td>-0.04169300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(28 [ALL])</th>\n",
       "      <td>-0.03960459</td>\n",
       "      <td>0.01388579</td>\n",
       "      <td>-0.04298737</td>\n",
       "      <td>0.04705234</td>\n",
       "      <td>-0.00073028</td>\n",
       "      <td>0.03487833</td>\n",
       "      <td>-0.01156382</td>\n",
       "      <td>0.00877075</td>\n",
       "      <td>-0.00074882</td>\n",
       "      <td>-0.00128949</td>\n",
       "      <td>0.01279480</td>\n",
       "      <td>-0.00687101</td>\n",
       "      <td>-0.00986285</td>\n",
       "      <td>-0.00905731</td>\n",
       "      <td>0.02499562</td>\n",
       "      <td>-0.00494904</td>\n",
       "      <td>-0.00115539</td>\n",
       "      <td>0.00082421</td>\n",
       "      <td>0.00224048</td>\n",
       "      <td>-0.00639780</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(29 [ALLE])</th>\n",
       "      <td>-0.01215236</td>\n",
       "      <td>0.01485340</td>\n",
       "      <td>0.01783511</td>\n",
       "      <td>-0.02151478</td>\n",
       "      <td>0.00049741</td>\n",
       "      <td>0.02208048</td>\n",
       "      <td>-0.01396758</td>\n",
       "      <td>0.04557020</td>\n",
       "      <td>-0.01575920</td>\n",
       "      <td>0.00225117</td>\n",
       "      <td>-0.01540340</td>\n",
       "      <td>-0.02608136</td>\n",
       "      <td>-0.00635063</td>\n",
       "      <td>-0.04124458</td>\n",
       "      <td>-0.00784737</td>\n",
       "      <td>-0.01976681</td>\n",
       "      <td>-0.00865976</td>\n",
       "      <td>0.03592991</td>\n",
       "      <td>0.00767178</td>\n",
       "      <td>0.03158662</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(460 [VRSN])</th>\n",
       "      <td>-0.03899324</td>\n",
       "      <td>0.01109333</td>\n",
       "      <td>0.04065347</td>\n",
       "      <td>-0.01351021</td>\n",
       "      <td>-0.03906872</td>\n",
       "      <td>0.00844214</td>\n",
       "      <td>0.01232426</td>\n",
       "      <td>-0.02031680</td>\n",
       "      <td>-0.01427350</td>\n",
       "      <td>-0.00833205</td>\n",
       "      <td>-0.02485455</td>\n",
       "      <td>0.02115889</td>\n",
       "      <td>0.00062521</td>\n",
       "      <td>0.01354571</td>\n",
       "      <td>0.02242982</td>\n",
       "      <td>0.03594197</td>\n",
       "      <td>-0.00752310</td>\n",
       "      <td>-0.00611545</td>\n",
       "      <td>-0.02595021</td>\n",
       "      <td>-0.00005537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(461 [VRTX])</th>\n",
       "      <td>-0.04909379</td>\n",
       "      <td>0.09821506</td>\n",
       "      <td>0.07490354</td>\n",
       "      <td>-0.22874272</td>\n",
       "      <td>0.18286011</td>\n",
       "      <td>0.29795662</td>\n",
       "      <td>0.16783749</td>\n",
       "      <td>-0.08588784</td>\n",
       "      <td>0.17241447</td>\n",
       "      <td>0.26880311</td>\n",
       "      <td>0.58246071</td>\n",
       "      <td>-0.03464001</td>\n",
       "      <td>-0.12627708</td>\n",
       "      <td>0.36184696</td>\n",
       "      <td>-0.14161962</td>\n",
       "      <td>-0.10440960</td>\n",
       "      <td>0.15669116</td>\n",
       "      <td>0.00258548</td>\n",
       "      <td>0.05374391</td>\n",
       "      <td>-0.10088761</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(462 [VTR])</th>\n",
       "      <td>-0.03291326</td>\n",
       "      <td>0.03068907</td>\n",
       "      <td>-0.12174007</td>\n",
       "      <td>-0.03757317</td>\n",
       "      <td>-0.00091457</td>\n",
       "      <td>-0.05384826</td>\n",
       "      <td>0.03088016</td>\n",
       "      <td>-0.06663125</td>\n",
       "      <td>0.04680683</td>\n",
       "      <td>0.00814737</td>\n",
       "      <td>-0.00367371</td>\n",
       "      <td>0.02294498</td>\n",
       "      <td>0.02497163</td>\n",
       "      <td>-0.03310961</td>\n",
       "      <td>-0.01353316</td>\n",
       "      <td>-0.02038055</td>\n",
       "      <td>-0.02035280</td>\n",
       "      <td>-0.00581734</td>\n",
       "      <td>0.04174183</td>\n",
       "      <td>0.02905358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(463 [VZ])</th>\n",
       "      <td>-0.07033190</td>\n",
       "      <td>0.00068427</td>\n",
       "      <td>-0.01610414</td>\n",
       "      <td>0.05981359</td>\n",
       "      <td>-0.01922444</td>\n",
       "      <td>0.03298870</td>\n",
       "      <td>-0.00089302</td>\n",
       "      <td>-0.00205798</td>\n",
       "      <td>0.03346385</td>\n",
       "      <td>-0.00820052</td>\n",
       "      <td>0.01313467</td>\n",
       "      <td>-0.01333200</td>\n",
       "      <td>0.00415716</td>\n",
       "      <td>-0.00898788</td>\n",
       "      <td>0.00645221</td>\n",
       "      <td>-0.01738755</td>\n",
       "      <td>0.00335631</td>\n",
       "      <td>-0.03321116</td>\n",
       "      <td>-0.03424556</td>\n",
       "      <td>-0.02031272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(464 [WAT])</th>\n",
       "      <td>-0.04787963</td>\n",
       "      <td>0.01976102</td>\n",
       "      <td>0.00630830</td>\n",
       "      <td>-0.01309650</td>\n",
       "      <td>-0.02786813</td>\n",
       "      <td>0.02969891</td>\n",
       "      <td>0.01135497</td>\n",
       "      <td>-0.01289454</td>\n",
       "      <td>0.02281688</td>\n",
       "      <td>0.00205729</td>\n",
       "      <td>-0.05584809</td>\n",
       "      <td>0.02544186</td>\n",
       "      <td>0.02317906</td>\n",
       "      <td>0.01111012</td>\n",
       "      <td>-0.03735916</td>\n",
       "      <td>0.03053670</td>\n",
       "      <td>-0.01161567</td>\n",
       "      <td>0.05062677</td>\n",
       "      <td>-0.01607733</td>\n",
       "      <td>-0.02896756</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(465 [WBA])</th>\n",
       "      <td>-0.03065220</td>\n",
       "      <td>0.03421533</td>\n",
       "      <td>-0.01027997</td>\n",
       "      <td>-0.04006665</td>\n",
       "      <td>-0.01725655</td>\n",
       "      <td>0.02037446</td>\n",
       "      <td>-0.00923922</td>\n",
       "      <td>0.04976024</td>\n",
       "      <td>-0.02415684</td>\n",
       "      <td>-0.02906100</td>\n",
       "      <td>-0.01704871</td>\n",
       "      <td>-0.00978625</td>\n",
       "      <td>-0.02967145</td>\n",
       "      <td>-0.00855083</td>\n",
       "      <td>-0.02413786</td>\n",
       "      <td>0.01716925</td>\n",
       "      <td>0.02913337</td>\n",
       "      <td>0.03131836</td>\n",
       "      <td>0.01484323</td>\n",
       "      <td>0.00683342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(466 [WDC])</th>\n",
       "      <td>-0.05340806</td>\n",
       "      <td>-0.00776436</td>\n",
       "      <td>0.06117296</td>\n",
       "      <td>-0.01397300</td>\n",
       "      <td>-0.02898379</td>\n",
       "      <td>-0.05151527</td>\n",
       "      <td>0.10653647</td>\n",
       "      <td>0.00360483</td>\n",
       "      <td>-0.00177534</td>\n",
       "      <td>-0.01754129</td>\n",
       "      <td>0.03043852</td>\n",
       "      <td>-0.00839301</td>\n",
       "      <td>-0.11248908</td>\n",
       "      <td>0.02938310</td>\n",
       "      <td>0.13499041</td>\n",
       "      <td>0.17141412</td>\n",
       "      <td>0.11221658</td>\n",
       "      <td>-0.22112989</td>\n",
       "      <td>-0.05340130</td>\n",
       "      <td>0.27231589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(467 [WEC])</th>\n",
       "      <td>-0.02279115</td>\n",
       "      <td>0.02557593</td>\n",
       "      <td>-0.10491696</td>\n",
       "      <td>-0.04691482</td>\n",
       "      <td>-0.00109145</td>\n",
       "      <td>-0.02887550</td>\n",
       "      <td>0.01886320</td>\n",
       "      <td>0.05105952</td>\n",
       "      <td>0.01033805</td>\n",
       "      <td>-0.02583748</td>\n",
       "      <td>0.02240632</td>\n",
       "      <td>-0.04433949</td>\n",
       "      <td>0.00086058</td>\n",
       "      <td>-0.01721494</td>\n",
       "      <td>0.02251708</td>\n",
       "      <td>0.01433085</td>\n",
       "      <td>0.04781420</td>\n",
       "      <td>-0.01020607</td>\n",
       "      <td>-0.01687023</td>\n",
       "      <td>-0.01798607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(468 [WFC])</th>\n",
       "      <td>-0.05131308</td>\n",
       "      <td>0.01109305</td>\n",
       "      <td>-0.03096455</td>\n",
       "      <td>0.08514607</td>\n",
       "      <td>0.00399898</td>\n",
       "      <td>0.06168940</td>\n",
       "      <td>-0.01917540</td>\n",
       "      <td>-0.00980213</td>\n",
       "      <td>0.02012808</td>\n",
       "      <td>0.00922159</td>\n",
       "      <td>0.02755224</td>\n",
       "      <td>-0.01813056</td>\n",
       "      <td>-0.00880242</td>\n",
       "      <td>-0.02231278</td>\n",
       "      <td>0.02429464</td>\n",
       "      <td>0.00372331</td>\n",
       "      <td>-0.00454128</td>\n",
       "      <td>0.00335586</td>\n",
       "      <td>-0.02606330</td>\n",
       "      <td>0.01015222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(469 [WHR])</th>\n",
       "      <td>-0.05507142</td>\n",
       "      <td>0.03637282</td>\n",
       "      <td>-0.00100598</td>\n",
       "      <td>0.00590479</td>\n",
       "      <td>0.01092658</td>\n",
       "      <td>-0.06423664</td>\n",
       "      <td>-0.05592381</td>\n",
       "      <td>0.02535313</td>\n",
       "      <td>-0.04216377</td>\n",
       "      <td>0.13444741</td>\n",
       "      <td>-0.01648804</td>\n",
       "      <td>0.01561092</td>\n",
       "      <td>-0.05450337</td>\n",
       "      <td>0.04108206</td>\n",
       "      <td>0.04115321</td>\n",
       "      <td>0.02808061</td>\n",
       "      <td>0.04912976</td>\n",
       "      <td>0.02732405</td>\n",
       "      <td>0.01817701</td>\n",
       "      <td>0.01086811</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(471 [WM])</th>\n",
       "      <td>-0.03151644</td>\n",
       "      <td>0.01496675</td>\n",
       "      <td>-0.03234348</td>\n",
       "      <td>-0.00111937</td>\n",
       "      <td>-0.02960532</td>\n",
       "      <td>0.00379175</td>\n",
       "      <td>-0.00185568</td>\n",
       "      <td>0.01331670</td>\n",
       "      <td>-0.00239896</td>\n",
       "      <td>-0.00938471</td>\n",
       "      <td>0.00277936</td>\n",
       "      <td>0.00920572</td>\n",
       "      <td>-0.00692979</td>\n",
       "      <td>0.03223594</td>\n",
       "      <td>-0.01134834</td>\n",
       "      <td>0.03628231</td>\n",
       "      <td>0.01820702</td>\n",
       "      <td>-0.01988943</td>\n",
       "      <td>0.02403495</td>\n",
       "      <td>0.01042652</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(472 [WMB])</th>\n",
       "      <td>-0.05476156</td>\n",
       "      <td>-0.08924998</td>\n",
       "      <td>-0.02426238</td>\n",
       "      <td>-0.05723889</td>\n",
       "      <td>0.07886307</td>\n",
       "      <td>-0.01255032</td>\n",
       "      <td>-0.03519116</td>\n",
       "      <td>0.02300738</td>\n",
       "      <td>-0.03160335</td>\n",
       "      <td>-0.02914851</td>\n",
       "      <td>0.00854960</td>\n",
       "      <td>0.01996384</td>\n",
       "      <td>-0.01039337</td>\n",
       "      <td>-0.00287563</td>\n",
       "      <td>0.03826935</td>\n",
       "      <td>-0.02475861</td>\n",
       "      <td>-0.02989245</td>\n",
       "      <td>-0.01712986</td>\n",
       "      <td>-0.10290158</td>\n",
       "      <td>-0.01224658</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(473 [WMT])</th>\n",
       "      <td>-0.01988671</td>\n",
       "      <td>0.03467415</td>\n",
       "      <td>-0.04017193</td>\n",
       "      <td>-0.00769646</td>\n",
       "      <td>-0.01460066</td>\n",
       "      <td>0.00726635</td>\n",
       "      <td>-0.02275936</td>\n",
       "      <td>0.03829212</td>\n",
       "      <td>-0.01129245</td>\n",
       "      <td>-0.00761002</td>\n",
       "      <td>0.00867345</td>\n",
       "      <td>0.00383922</td>\n",
       "      <td>-0.04340883</td>\n",
       "      <td>0.02467536</td>\n",
       "      <td>0.01323727</td>\n",
       "      <td>0.01194552</td>\n",
       "      <td>-0.02497356</td>\n",
       "      <td>0.00351902</td>\n",
       "      <td>0.00777862</td>\n",
       "      <td>0.01076198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(474 [WRK])</th>\n",
       "      <td>-0.00563001</td>\n",
       "      <td>-0.00526226</td>\n",
       "      <td>0.00630657</td>\n",
       "      <td>-0.00994056</td>\n",
       "      <td>0.00615504</td>\n",
       "      <td>0.01085219</td>\n",
       "      <td>0.00188007</td>\n",
       "      <td>0.01706454</td>\n",
       "      <td>-0.00685762</td>\n",
       "      <td>-0.00781146</td>\n",
       "      <td>0.00359568</td>\n",
       "      <td>-0.02948648</td>\n",
       "      <td>-0.02071811</td>\n",
       "      <td>0.00905441</td>\n",
       "      <td>0.00186650</td>\n",
       "      <td>-0.01865369</td>\n",
       "      <td>-0.01239063</td>\n",
       "      <td>0.02357001</td>\n",
       "      <td>-0.02087232</td>\n",
       "      <td>0.04046773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(475 [WU])</th>\n",
       "      <td>-0.04059879</td>\n",
       "      <td>0.00365919</td>\n",
       "      <td>0.01271940</td>\n",
       "      <td>0.00231537</td>\n",
       "      <td>-0.01726731</td>\n",
       "      <td>0.03143078</td>\n",
       "      <td>0.02344129</td>\n",
       "      <td>0.01431019</td>\n",
       "      <td>-0.02394147</td>\n",
       "      <td>-0.00790867</td>\n",
       "      <td>-0.02335012</td>\n",
       "      <td>-0.00977388</td>\n",
       "      <td>-0.00331322</td>\n",
       "      <td>-0.02121476</td>\n",
       "      <td>0.00574640</td>\n",
       "      <td>-0.03553201</td>\n",
       "      <td>-0.00661356</td>\n",
       "      <td>-0.03045924</td>\n",
       "      <td>0.00995369</td>\n",
       "      <td>-0.04708063</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(476 [WY])</th>\n",
       "      <td>-0.04860757</td>\n",
       "      <td>0.01225382</td>\n",
       "      <td>-0.04997087</td>\n",
       "      <td>0.00551805</td>\n",
       "      <td>-0.00278578</td>\n",
       "      <td>-0.03035081</td>\n",
       "      <td>0.01706471</td>\n",
       "      <td>-0.04454320</td>\n",
       "      <td>0.02067441</td>\n",
       "      <td>0.04950772</td>\n",
       "      <td>-0.02155464</td>\n",
       "      <td>-0.01867393</td>\n",
       "      <td>-0.00268823</td>\n",
       "      <td>0.02518978</td>\n",
       "      <td>-0.01532718</td>\n",
       "      <td>-0.02625075</td>\n",
       "      <td>-0.02418712</td>\n",
       "      <td>0.00957536</td>\n",
       "      <td>0.01679332</td>\n",
       "      <td>-0.00412955</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(477 [WYN])</th>\n",
       "      <td>-0.05535480</td>\n",
       "      <td>0.02642294</td>\n",
       "      <td>0.00304199</td>\n",
       "      <td>-0.00979668</td>\n",
       "      <td>-0.00616717</td>\n",
       "      <td>-0.02917053</td>\n",
       "      <td>-0.01685646</td>\n",
       "      <td>-0.03459347</td>\n",
       "      <td>-0.04851210</td>\n",
       "      <td>-0.00714578</td>\n",
       "      <td>0.02188880</td>\n",
       "      <td>0.02067000</td>\n",
       "      <td>0.01051755</td>\n",
       "      <td>0.02073259</td>\n",
       "      <td>0.01106532</td>\n",
       "      <td>0.01470477</td>\n",
       "      <td>-0.00226587</td>\n",
       "      <td>-0.02256858</td>\n",
       "      <td>-0.03784605</td>\n",
       "      <td>-0.01748119</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(478 [WYNN])</th>\n",
       "      <td>-0.06224023</td>\n",
       "      <td>-0.03777009</td>\n",
       "      <td>0.05699233</td>\n",
       "      <td>-0.04984462</td>\n",
       "      <td>0.00328186</td>\n",
       "      <td>-0.05450135</td>\n",
       "      <td>-0.01461477</td>\n",
       "      <td>-0.13651307</td>\n",
       "      <td>-0.10364775</td>\n",
       "      <td>-0.13173348</td>\n",
       "      <td>0.08154700</td>\n",
       "      <td>-0.21134975</td>\n",
       "      <td>0.05793940</td>\n",
       "      <td>0.06955993</td>\n",
       "      <td>-0.05215021</td>\n",
       "      <td>0.00468932</td>\n",
       "      <td>-0.04338772</td>\n",
       "      <td>0.14131780</td>\n",
       "      <td>-0.02504257</td>\n",
       "      <td>0.02417878</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(479 [XEC])</th>\n",
       "      <td>-0.06269690</td>\n",
       "      <td>-0.17159838</td>\n",
       "      <td>0.01127251</td>\n",
       "      <td>-0.03690692</td>\n",
       "      <td>0.07210881</td>\n",
       "      <td>0.04237735</td>\n",
       "      <td>-0.01733096</td>\n",
       "      <td>-0.00894589</td>\n",
       "      <td>-0.00116263</td>\n",
       "      <td>-0.04083135</td>\n",
       "      <td>0.00912637</td>\n",
       "      <td>0.02183445</td>\n",
       "      <td>-0.00217537</td>\n",
       "      <td>-0.10441731</td>\n",
       "      <td>-0.05669005</td>\n",
       "      <td>0.00593931</td>\n",
       "      <td>0.06575714</td>\n",
       "      <td>-0.03770747</td>\n",
       "      <td>0.09486709</td>\n",
       "      <td>-0.06387098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(480 [XEL])</th>\n",
       "      <td>-0.02213358</td>\n",
       "      <td>0.02037290</td>\n",
       "      <td>-0.09965905</td>\n",
       "      <td>-0.04339570</td>\n",
       "      <td>-0.00356988</td>\n",
       "      <td>-0.02492272</td>\n",
       "      <td>0.01491957</td>\n",
       "      <td>0.05105363</td>\n",
       "      <td>-0.00024236</td>\n",
       "      <td>-0.02451330</td>\n",
       "      <td>0.01835319</td>\n",
       "      <td>-0.05349810</td>\n",
       "      <td>-0.00097559</td>\n",
       "      <td>-0.00596671</td>\n",
       "      <td>0.02197929</td>\n",
       "      <td>0.01863163</td>\n",
       "      <td>0.04664665</td>\n",
       "      <td>-0.00826953</td>\n",
       "      <td>-0.01791475</td>\n",
       "      <td>-0.02072648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <td>-0.04533940</td>\n",
       "      <td>0.01070557</td>\n",
       "      <td>-0.03511721</td>\n",
       "      <td>0.04642140</td>\n",
       "      <td>-0.00583933</td>\n",
       "      <td>0.01175012</td>\n",
       "      <td>0.01269465</td>\n",
       "      <td>-0.02088638</td>\n",
       "      <td>0.01106751</td>\n",
       "      <td>-0.00003951</td>\n",
       "      <td>0.00649962</td>\n",
       "      <td>0.00959532</td>\n",
       "      <td>0.00151969</td>\n",
       "      <td>-0.00052693</td>\n",
       "      <td>0.00744188</td>\n",
       "      <td>0.01978538</td>\n",
       "      <td>-0.00164444</td>\n",
       "      <td>0.00315162</td>\n",
       "      <td>0.00519293</td>\n",
       "      <td>-0.03064259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <td>-0.04210479</td>\n",
       "      <td>-0.00382104</td>\n",
       "      <td>0.05760794</td>\n",
       "      <td>-0.01871999</td>\n",
       "      <td>-0.06972723</td>\n",
       "      <td>-0.01255952</td>\n",
       "      <td>0.09049018</td>\n",
       "      <td>0.05367295</td>\n",
       "      <td>0.00001376</td>\n",
       "      <td>0.00960728</td>\n",
       "      <td>0.01455370</td>\n",
       "      <td>0.00163722</td>\n",
       "      <td>-0.03587944</td>\n",
       "      <td>-0.04241793</td>\n",
       "      <td>0.00144974</td>\n",
       "      <td>-0.03148143</td>\n",
       "      <td>0.03558220</td>\n",
       "      <td>0.01661543</td>\n",
       "      <td>0.01022713</td>\n",
       "      <td>-0.00396583</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <td>-0.03773468</td>\n",
       "      <td>-0.05378131</td>\n",
       "      <td>-0.03367517</td>\n",
       "      <td>-0.01036467</td>\n",
       "      <td>-0.00395082</td>\n",
       "      <td>0.02952766</td>\n",
       "      <td>-0.00565258</td>\n",
       "      <td>0.04906130</td>\n",
       "      <td>0.00089804</td>\n",
       "      <td>-0.00311029</td>\n",
       "      <td>-0.00739458</td>\n",
       "      <td>-0.01164590</td>\n",
       "      <td>-0.01051455</td>\n",
       "      <td>0.01413654</td>\n",
       "      <td>0.00286959</td>\n",
       "      <td>0.00192552</td>\n",
       "      <td>-0.00324646</td>\n",
       "      <td>0.00012369</td>\n",
       "      <td>0.01694194</td>\n",
       "      <td>0.01003126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <td>-0.04417162</td>\n",
       "      <td>0.01778874</td>\n",
       "      <td>-0.00062230</td>\n",
       "      <td>0.00814409</td>\n",
       "      <td>-0.02933804</td>\n",
       "      <td>0.01859296</td>\n",
       "      <td>0.01513543</td>\n",
       "      <td>-0.00291478</td>\n",
       "      <td>-0.00638183</td>\n",
       "      <td>-0.00958277</td>\n",
       "      <td>-0.01879890</td>\n",
       "      <td>0.00101476</td>\n",
       "      <td>0.01167483</td>\n",
       "      <td>0.02288506</td>\n",
       "      <td>-0.02825392</td>\n",
       "      <td>0.01102642</td>\n",
       "      <td>0.01849776</td>\n",
       "      <td>0.00975355</td>\n",
       "      <td>0.00668087</td>\n",
       "      <td>-0.04636686</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <td>-0.05418096</td>\n",
       "      <td>-0.00344402</td>\n",
       "      <td>0.01002127</td>\n",
       "      <td>0.02970052</td>\n",
       "      <td>-0.04632619</td>\n",
       "      <td>0.01414187</td>\n",
       "      <td>0.01544957</td>\n",
       "      <td>0.03335353</td>\n",
       "      <td>-0.00134738</td>\n",
       "      <td>-0.03200626</td>\n",
       "      <td>-0.00744424</td>\n",
       "      <td>-0.01931881</td>\n",
       "      <td>-0.03324697</td>\n",
       "      <td>0.01915283</td>\n",
       "      <td>-0.01067988</td>\n",
       "      <td>-0.01247793</td>\n",
       "      <td>0.00098390</td>\n",
       "      <td>-0.04865041</td>\n",
       "      <td>0.01743092</td>\n",
       "      <td>0.00666409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <td>-0.02818794</td>\n",
       "      <td>-0.01716654</td>\n",
       "      <td>0.03265037</td>\n",
       "      <td>-0.01947739</td>\n",
       "      <td>-0.00284445</td>\n",
       "      <td>0.00870998</td>\n",
       "      <td>-0.01888604</td>\n",
       "      <td>0.06659425</td>\n",
       "      <td>-0.02409194</td>\n",
       "      <td>0.03602542</td>\n",
       "      <td>-0.02482881</td>\n",
       "      <td>-0.03921085</td>\n",
       "      <td>-0.00964275</td>\n",
       "      <td>-0.04118213</td>\n",
       "      <td>-0.05878742</td>\n",
       "      <td>-0.02300320</td>\n",
       "      <td>0.00625647</td>\n",
       "      <td>0.04733302</td>\n",
       "      <td>-0.00256510</td>\n",
       "      <td>0.04937012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <td>-0.03630261</td>\n",
       "      <td>0.02726148</td>\n",
       "      <td>0.00226076</td>\n",
       "      <td>-0.02614444</td>\n",
       "      <td>-0.01418528</td>\n",
       "      <td>0.00132929</td>\n",
       "      <td>-0.04156624</td>\n",
       "      <td>0.00017706</td>\n",
       "      <td>-0.03049746</td>\n",
       "      <td>-0.02788495</td>\n",
       "      <td>0.01280995</td>\n",
       "      <td>0.00298781</td>\n",
       "      <td>-0.01235304</td>\n",
       "      <td>0.00926070</td>\n",
       "      <td>0.00035906</td>\n",
       "      <td>-0.00496092</td>\n",
       "      <td>-0.01453755</td>\n",
       "      <td>0.01909012</td>\n",
       "      <td>-0.01126627</td>\n",
       "      <td>-0.00177409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <td>-0.03843904</td>\n",
       "      <td>0.01749339</td>\n",
       "      <td>-0.01575190</td>\n",
       "      <td>-0.01540756</td>\n",
       "      <td>-0.00162086</td>\n",
       "      <td>0.04604255</td>\n",
       "      <td>0.00107619</td>\n",
       "      <td>-0.00762158</td>\n",
       "      <td>0.00942745</td>\n",
       "      <td>-0.01275463</td>\n",
       "      <td>-0.06637911</td>\n",
       "      <td>-0.01112025</td>\n",
       "      <td>-0.02675098</td>\n",
       "      <td>0.01827896</td>\n",
       "      <td>-0.04768582</td>\n",
       "      <td>0.01395948</td>\n",
       "      <td>0.01018115</td>\n",
       "      <td>0.04125323</td>\n",
       "      <td>0.00671842</td>\n",
       "      <td>-0.01540844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <td>-0.06092493</td>\n",
       "      <td>-0.01044197</td>\n",
       "      <td>0.01261759</td>\n",
       "      <td>0.13419161</td>\n",
       "      <td>0.02396471</td>\n",
       "      <td>0.09232022</td>\n",
       "      <td>-0.04477488</td>\n",
       "      <td>-0.03030878</td>\n",
       "      <td>0.03194794</td>\n",
       "      <td>-0.01095035</td>\n",
       "      <td>0.04091415</td>\n",
       "      <td>-0.01621729</td>\n",
       "      <td>-0.01158269</td>\n",
       "      <td>-0.03556539</td>\n",
       "      <td>0.00554836</td>\n",
       "      <td>-0.00341750</td>\n",
       "      <td>0.00706111</td>\n",
       "      <td>0.00352290</td>\n",
       "      <td>-0.02193923</td>\n",
       "      <td>0.02188794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "      <td>-0.01367163</td>\n",
       "      <td>0.01892192</td>\n",
       "      <td>0.01867875</td>\n",
       "      <td>-0.04878703</td>\n",
       "      <td>0.01263697</td>\n",
       "      <td>0.04831930</td>\n",
       "      <td>-0.00205544</td>\n",
       "      <td>0.01613385</td>\n",
       "      <td>-0.01918963</td>\n",
       "      <td>-0.03072014</td>\n",
       "      <td>-0.04031418</td>\n",
       "      <td>-0.03085290</td>\n",
       "      <td>-0.05612824</td>\n",
       "      <td>-0.01541907</td>\n",
       "      <td>0.00108249</td>\n",
       "      <td>-0.02396138</td>\n",
       "      <td>-0.01026795</td>\n",
       "      <td>0.03682367</td>\n",
       "      <td>0.00833979</td>\n",
       "      <td>0.01500221</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>490 rows × 20 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            0           1           2           3   \\\n",
       "Equity(0 [A])      -0.04316847  0.01955111 -0.00993375  0.01054038   \n",
       "Equity(1 [AAL])    -0.05874471  0.19637679  0.07868756  0.08209582   \n",
       "Equity(2 [AAP])    -0.03433256  0.03451503  0.01133839 -0.02543666   \n",
       "Equity(3 [AAPL])   -0.03409988 -0.00139319  0.03946700 -0.01721303   \n",
       "Equity(4 [ABBV])   -0.01803099  0.02568151  0.00435183 -0.07078179   \n",
       "Equity(5 [ABC])    -0.02890016  0.03259161 -0.00742074 -0.03355183   \n",
       "Equity(6 [ABT])    -0.02905740  0.02977821 -0.02970871 -0.03574263   \n",
       "Equity(7 [ACN])    -0.04337745  0.00256907  0.00413229 -0.00349265   \n",
       "Equity(8 [ADBE])   -0.04730285  0.02661175  0.03057072 -0.02114690   \n",
       "Equity(9 [ADI])    -0.04712287 -0.00381150  0.05600847 -0.01553775   \n",
       "Equity(10 [ADM])   -0.04375945 -0.01130045 -0.03457005  0.00400541   \n",
       "Equity(11 [ADP])   -0.03648136  0.02528125 -0.01114832 -0.00940984   \n",
       "Equity(12 [ADS])   -0.04136654  0.01659887  0.01716323 -0.02418717   \n",
       "Equity(13 [ADSK])  -0.06028785  0.01995266  0.05164356  0.00105689   \n",
       "Equity(14 [AEE])   -0.02646901  0.02222316 -0.10714999 -0.03824488   \n",
       "Equity(15 [AEP])   -0.02263370  0.01880106 -0.10030310 -0.04210462   \n",
       "Equity(16 [AES])   -0.04557539 -0.01859287 -0.06960047 -0.02023102   \n",
       "Equity(17 [AET])   -0.04072498  0.02731997 -0.00507231 -0.02802199   \n",
       "Equity(18 [AFL])   -0.05336864  0.00134653 -0.02782496  0.06688998   \n",
       "Equity(19 [AGN])   -0.03534102  0.04465091  0.02264084 -0.09556088   \n",
       "Equity(20 [AIG])   -0.05982324  0.00588515 -0.01162873  0.06668318   \n",
       "Equity(21 [AIV])   -0.04111735  0.03100207 -0.10211708 -0.00919327   \n",
       "Equity(22 [AIZ])   -0.04150874  0.01695771 -0.03297298  0.04770347   \n",
       "Equity(23 [AJG])   -0.03351812  0.01723113 -0.02538602  0.01303842   \n",
       "Equity(24 [AKAM])  -0.05587884  0.00798596  0.06670064 -0.00705542   \n",
       "Equity(25 [ALB])   -0.05982022 -0.03657577  0.01798669  0.01363477   \n",
       "Equity(26 [ALGN])  -0.05959262  0.01420686  0.04030645 -0.00223610   \n",
       "Equity(27 [ALK])   -0.04887994  0.12134700  0.03971829  0.02356295   \n",
       "Equity(28 [ALL])   -0.03960459  0.01388579 -0.04298737  0.04705234   \n",
       "Equity(29 [ALLE])  -0.01215236  0.01485340  0.01783511 -0.02151478   \n",
       "...                        ...         ...         ...         ...   \n",
       "Equity(460 [VRSN]) -0.03899324  0.01109333  0.04065347 -0.01351021   \n",
       "Equity(461 [VRTX]) -0.04909379  0.09821506  0.07490354 -0.22874272   \n",
       "Equity(462 [VTR])  -0.03291326  0.03068907 -0.12174007 -0.03757317   \n",
       "Equity(463 [VZ])   -0.07033190  0.00068427 -0.01610414  0.05981359   \n",
       "Equity(464 [WAT])  -0.04787963  0.01976102  0.00630830 -0.01309650   \n",
       "Equity(465 [WBA])  -0.03065220  0.03421533 -0.01027997 -0.04006665   \n",
       "Equity(466 [WDC])  -0.05340806 -0.00776436  0.06117296 -0.01397300   \n",
       "Equity(467 [WEC])  -0.02279115  0.02557593 -0.10491696 -0.04691482   \n",
       "Equity(468 [WFC])  -0.05131308  0.01109305 -0.03096455  0.08514607   \n",
       "Equity(469 [WHR])  -0.05507142  0.03637282 -0.00100598  0.00590479   \n",
       "Equity(471 [WM])   -0.03151644  0.01496675 -0.03234348 -0.00111937   \n",
       "Equity(472 [WMB])  -0.05476156 -0.08924998 -0.02426238 -0.05723889   \n",
       "Equity(473 [WMT])  -0.01988671  0.03467415 -0.04017193 -0.00769646   \n",
       "Equity(474 [WRK])  -0.00563001 -0.00526226  0.00630657 -0.00994056   \n",
       "Equity(475 [WU])   -0.04059879  0.00365919  0.01271940  0.00231537   \n",
       "Equity(476 [WY])   -0.04860757  0.01225382 -0.04997087  0.00551805   \n",
       "Equity(477 [WYN])  -0.05535480  0.02642294  0.00304199 -0.00979668   \n",
       "Equity(478 [WYNN]) -0.06224023 -0.03777009  0.05699233 -0.04984462   \n",
       "Equity(479 [XEC])  -0.06269690 -0.17159838  0.01127251 -0.03690692   \n",
       "Equity(480 [XEL])  -0.02213358  0.02037290 -0.09965905 -0.04339570   \n",
       "Equity(481 [XL])   -0.04533940  0.01070557 -0.03511721  0.04642140   \n",
       "Equity(482 [XLNX]) -0.04210479 -0.00382104  0.05760794 -0.01871999   \n",
       "Equity(483 [XOM])  -0.03773468 -0.05378131 -0.03367517 -0.01036467   \n",
       "Equity(484 [XRAY]) -0.04417162  0.01778874 -0.00062230  0.00814409   \n",
       "Equity(485 [XRX])  -0.05418096 -0.00344402  0.01002127  0.02970052   \n",
       "Equity(486 [XYL])  -0.02818794 -0.01716654  0.03265037 -0.01947739   \n",
       "Equity(487 [YUM])  -0.03630261  0.02726148  0.00226076 -0.02614444   \n",
       "Equity(488 [ZBH])  -0.03843904  0.01749339 -0.01575190 -0.01540756   \n",
       "Equity(489 [ZION]) -0.06092493 -0.01044197  0.01261759  0.13419161   \n",
       "Equity(490 [ZTS])  -0.01367163  0.01892192  0.01867875 -0.04878703   \n",
       "\n",
       "                            4           5           6           7   \\\n",
       "Equity(0 [A])      -0.01819821  0.01074517  0.00112915  0.03973914   \n",
       "Equity(1 [AAL])     0.34847826 -0.13808246  0.07129285  0.10524788   \n",
       "Equity(2 [AAP])    -0.00817211 -0.01318319 -0.06095238  0.00654915   \n",
       "Equity(3 [AAPL])   -0.03046983 -0.01757067  0.02325117  0.01142987   \n",
       "Equity(4 [ABBV])    0.01319937  0.05427710 -0.01567842  0.04046172   \n",
       "Equity(5 [ABC])    -0.01152149  0.02648421  0.01084965 -0.00570393   \n",
       "Equity(6 [ABT])    -0.01157351  0.06020073 -0.02004042  0.04098522   \n",
       "Equity(7 [ACN])    -0.05430743  0.00537434  0.00277996  0.03043220   \n",
       "Equity(8 [ADBE])   -0.04838794 -0.00708698  0.00743385  0.00747095   \n",
       "Equity(9 [ADI])    -0.06946243 -0.00560418  0.10070366  0.06307694   \n",
       "Equity(10 [ADM])   -0.00645333  0.01746845 -0.00146122  0.04177642   \n",
       "Equity(11 [ADP])   -0.03357614  0.02887659 -0.00509280  0.04466799   \n",
       "Equity(12 [ADS])   -0.00389740  0.00098181 -0.02299563  0.01316338   \n",
       "Equity(13 [ADSK])  -0.06889175 -0.04893180  0.04706144 -0.02746946   \n",
       "Equity(14 [AEE])   -0.00157895 -0.02310383  0.02412315  0.04419314   \n",
       "Equity(15 [AEP])    0.00205558 -0.03150526  0.02496444  0.05473617   \n",
       "Equity(16 [AES])    0.01303429 -0.01748403  0.02894033  0.03053573   \n",
       "Equity(17 [AET])   -0.00180323  0.06383735  0.00044765 -0.03716524   \n",
       "Equity(18 [AFL])   -0.01355109  0.04111821 -0.00401011 -0.01388700   \n",
       "Equity(19 [AGN])    0.02867567  0.06515425 -0.02264216 -0.01928860   \n",
       "Equity(20 [AIG])    0.01385338  0.04010201 -0.01874280 -0.02394864   \n",
       "Equity(21 [AIV])    0.01055402 -0.04739093  0.05244727 -0.09495931   \n",
       "Equity(22 [AIZ])   -0.00003273  0.04220872 -0.00295921  0.01717020   \n",
       "Equity(23 [AJG])   -0.00670008  0.02117990 -0.01015869  0.00117300   \n",
       "Equity(24 [AKAM])  -0.05149731 -0.04837770  0.02745032 -0.00620225   \n",
       "Equity(25 [ALB])   -0.01737160 -0.03079886  0.04201500  0.00605395   \n",
       "Equity(26 [ALGN])   0.00381377  0.03559561  0.04027152 -0.09389473   \n",
       "Equity(27 [ALK])    0.12648496 -0.05703822  0.02168427  0.06427147   \n",
       "Equity(28 [ALL])   -0.00073028  0.03487833 -0.01156382  0.00877075   \n",
       "Equity(29 [ALLE])   0.00049741  0.02208048 -0.01396758  0.04557020   \n",
       "...                        ...         ...         ...         ...   \n",
       "Equity(460 [VRSN]) -0.03906872  0.00844214  0.01232426 -0.02031680   \n",
       "Equity(461 [VRTX])  0.18286011  0.29795662  0.16783749 -0.08588784   \n",
       "Equity(462 [VTR])  -0.00091457 -0.05384826  0.03088016 -0.06663125   \n",
       "Equity(463 [VZ])   -0.01922444  0.03298870 -0.00089302 -0.00205798   \n",
       "Equity(464 [WAT])  -0.02786813  0.02969891  0.01135497 -0.01289454   \n",
       "Equity(465 [WBA])  -0.01725655  0.02037446 -0.00923922  0.04976024   \n",
       "Equity(466 [WDC])  -0.02898379 -0.05151527  0.10653647  0.00360483   \n",
       "Equity(467 [WEC])  -0.00109145 -0.02887550  0.01886320  0.05105952   \n",
       "Equity(468 [WFC])   0.00399898  0.06168940 -0.01917540 -0.00980213   \n",
       "Equity(469 [WHR])   0.01092658 -0.06423664 -0.05592381  0.02535313   \n",
       "Equity(471 [WM])   -0.02960532  0.00379175 -0.00185568  0.01331670   \n",
       "Equity(472 [WMB])   0.07886307 -0.01255032 -0.03519116  0.02300738   \n",
       "Equity(473 [WMT])  -0.01460066  0.00726635 -0.02275936  0.03829212   \n",
       "Equity(474 [WRK])   0.00615504  0.01085219  0.00188007  0.01706454   \n",
       "Equity(475 [WU])   -0.01726731  0.03143078  0.02344129  0.01431019   \n",
       "Equity(476 [WY])   -0.00278578 -0.03035081  0.01706471 -0.04454320   \n",
       "Equity(477 [WYN])  -0.00616717 -0.02917053 -0.01685646 -0.03459347   \n",
       "Equity(478 [WYNN])  0.00328186 -0.05450135 -0.01461477 -0.13651307   \n",
       "Equity(479 [XEC])   0.07210881  0.04237735 -0.01733096 -0.00894589   \n",
       "Equity(480 [XEL])  -0.00356988 -0.02492272  0.01491957  0.05105363   \n",
       "Equity(481 [XL])   -0.00583933  0.01175012  0.01269465 -0.02088638   \n",
       "Equity(482 [XLNX]) -0.06972723 -0.01255952  0.09049018  0.05367295   \n",
       "Equity(483 [XOM])  -0.00395082  0.02952766 -0.00565258  0.04906130   \n",
       "Equity(484 [XRAY]) -0.02933804  0.01859296  0.01513543 -0.00291478   \n",
       "Equity(485 [XRX])  -0.04632619  0.01414187  0.01544957  0.03335353   \n",
       "Equity(486 [XYL])  -0.00284445  0.00870998 -0.01888604  0.06659425   \n",
       "Equity(487 [YUM])  -0.01418528  0.00132929 -0.04156624  0.00017706   \n",
       "Equity(488 [ZBH])  -0.00162086  0.04604255  0.00107619 -0.00762158   \n",
       "Equity(489 [ZION])  0.02396471  0.09232022 -0.04477488 -0.03030878   \n",
       "Equity(490 [ZTS])   0.01263697  0.04831930 -0.00205544  0.01613385   \n",
       "\n",
       "                            8           9           10          11  \\\n",
       "Equity(0 [A])      -0.01380519  0.01273651 -0.02384028 -0.00141663   \n",
       "Equity(1 [AAL])    -0.04588957 -0.08547793  0.00328328  0.10534284   \n",
       "Equity(2 [AAP])    -0.03265404 -0.01351522  0.02896685  0.03836520   \n",
       "Equity(3 [AAPL])   -0.02656849 -0.00771904  0.02686350  0.00731877   \n",
       "Equity(4 [ABBV])   -0.01245487 -0.03515086 -0.05132433 -0.04041614   \n",
       "Equity(5 [ABC])     0.01354800 -0.02967931 -0.03161765  0.01715152   \n",
       "Equity(6 [ABT])    -0.01803987 -0.00620785 -0.03157790 -0.02308041   \n",
       "Equity(7 [ACN])    -0.01880168 -0.00178336 -0.03540357 -0.01093170   \n",
       "Equity(8 [ADBE])    0.01487098 -0.00153422 -0.01238383 -0.00667442   \n",
       "Equity(9 [ADI])     0.00160769  0.01912993  0.01101680  0.00348733   \n",
       "Equity(10 [ADM])   -0.00478644 -0.01859623  0.00422432 -0.00952513   \n",
       "Equity(11 [ADP])   -0.00676480  0.00335015 -0.00493401  0.00194010   \n",
       "Equity(12 [ADS])   -0.02790599  0.00654660  0.00628604 -0.00342924   \n",
       "Equity(13 [ADSK])   0.00290438  0.00534281 -0.01150281 -0.00105789   \n",
       "Equity(14 [AEE])    0.00041473 -0.02597657  0.02325386 -0.05456489   \n",
       "Equity(15 [AEP])    0.00166554 -0.02261936  0.01766823 -0.04791054   \n",
       "Equity(16 [AES])   -0.01228381 -0.02623395  0.00383933 -0.05881947   \n",
       "Equity(17 [AET])    0.00999656 -0.09646860 -0.04571407  0.04559328   \n",
       "Equity(18 [AFL])    0.01362724  0.00343990 -0.00993833 -0.00945988   \n",
       "Equity(19 [AGN])   -0.02379115 -0.02578767 -0.02640179 -0.00734949   \n",
       "Equity(20 [AIG])    0.01457678  0.02061950 -0.00588748 -0.01886738   \n",
       "Equity(21 [AIV])    0.04963087  0.00394508  0.02486556  0.02540802   \n",
       "Equity(22 [AIZ])    0.02192818 -0.01979049  0.00845285 -0.00209358   \n",
       "Equity(23 [AJG])    0.00768045  0.00434263 -0.00824876  0.01520847   \n",
       "Equity(24 [AKAM])   0.02668695 -0.01154353  0.00107161 -0.06366032   \n",
       "Equity(25 [ALB])   -0.02047597  0.03736635 -0.00136191  0.01865916   \n",
       "Equity(26 [ALGN])   0.03501042  0.00979674 -0.07400799  0.02204550   \n",
       "Equity(27 [ALK])   -0.01679148 -0.02374091 -0.00059277  0.06395819   \n",
       "Equity(28 [ALL])   -0.00074882 -0.00128949  0.01279480 -0.00687101   \n",
       "Equity(29 [ALLE])  -0.01575920  0.00225117 -0.01540340 -0.02608136   \n",
       "...                        ...         ...         ...         ...   \n",
       "Equity(460 [VRSN]) -0.01427350 -0.00833205 -0.02485455  0.02115889   \n",
       "Equity(461 [VRTX])  0.17241447  0.26880311  0.58246071 -0.03464001   \n",
       "Equity(462 [VTR])   0.04680683  0.00814737 -0.00367371  0.02294498   \n",
       "Equity(463 [VZ])    0.03346385 -0.00820052  0.01313467 -0.01333200   \n",
       "Equity(464 [WAT])   0.02281688  0.00205729 -0.05584809  0.02544186   \n",
       "Equity(465 [WBA])  -0.02415684 -0.02906100 -0.01704871 -0.00978625   \n",
       "Equity(466 [WDC])  -0.00177534 -0.01754129  0.03043852 -0.00839301   \n",
       "Equity(467 [WEC])   0.01033805 -0.02583748  0.02240632 -0.04433949   \n",
       "Equity(468 [WFC])   0.02012808  0.00922159  0.02755224 -0.01813056   \n",
       "Equity(469 [WHR])  -0.04216377  0.13444741 -0.01648804  0.01561092   \n",
       "Equity(471 [WM])   -0.00239896 -0.00938471  0.00277936  0.00920572   \n",
       "Equity(472 [WMB])  -0.03160335 -0.02914851  0.00854960  0.01996384   \n",
       "Equity(473 [WMT])  -0.01129245 -0.00761002  0.00867345  0.00383922   \n",
       "Equity(474 [WRK])  -0.00685762 -0.00781146  0.00359568 -0.02948648   \n",
       "Equity(475 [WU])   -0.02394147 -0.00790867 -0.02335012 -0.00977388   \n",
       "Equity(476 [WY])    0.02067441  0.04950772 -0.02155464 -0.01867393   \n",
       "Equity(477 [WYN])  -0.04851210 -0.00714578  0.02188880  0.02067000   \n",
       "Equity(478 [WYNN]) -0.10364775 -0.13173348  0.08154700 -0.21134975   \n",
       "Equity(479 [XEC])  -0.00116263 -0.04083135  0.00912637  0.02183445   \n",
       "Equity(480 [XEL])  -0.00024236 -0.02451330  0.01835319 -0.05349810   \n",
       "Equity(481 [XL])    0.01106751 -0.00003951  0.00649962  0.00959532   \n",
       "Equity(482 [XLNX])  0.00001376  0.00960728  0.01455370  0.00163722   \n",
       "Equity(483 [XOM])   0.00089804 -0.00311029 -0.00739458 -0.01164590   \n",
       "Equity(484 [XRAY]) -0.00638183 -0.00958277 -0.01879890  0.00101476   \n",
       "Equity(485 [XRX])  -0.00134738 -0.03200626 -0.00744424 -0.01931881   \n",
       "Equity(486 [XYL])  -0.02409194  0.03602542 -0.02482881 -0.03921085   \n",
       "Equity(487 [YUM])  -0.03049746 -0.02788495  0.01280995  0.00298781   \n",
       "Equity(488 [ZBH])   0.00942745 -0.01275463 -0.06637911 -0.01112025   \n",
       "Equity(489 [ZION])  0.03194794 -0.01095035  0.04091415 -0.01621729   \n",
       "Equity(490 [ZTS])  -0.01918963 -0.03072014 -0.04031418 -0.03085290   \n",
       "\n",
       "                            12          13          14          15  \\\n",
       "Equity(0 [A])       0.02099338  0.03460997 -0.03048936  0.03360635   \n",
       "Equity(1 [AAL])     0.06721603 -0.04405955 -0.02231617  0.01726309   \n",
       "Equity(2 [AAP])    -0.04960451 -0.00524576 -0.02196994  0.02976718   \n",
       "Equity(3 [AAPL])    0.00481832  0.01288623  0.05256513 -0.07344470   \n",
       "Equity(4 [ABBV])   -0.05120320 -0.01858166 -0.01126857 -0.04200714   \n",
       "Equity(5 [ABC])    -0.00304998  0.02635564  0.00787900  0.00833106   \n",
       "Equity(6 [ABT])    -0.01436789 -0.00054254 -0.01932887  0.01428819   \n",
       "Equity(7 [ACN])     0.02611241 -0.01233115  0.00322097  0.01770011   \n",
       "Equity(8 [ADBE])    0.03500718 -0.04336579  0.01060255 -0.00637875   \n",
       "Equity(9 [ADI])    -0.05465749 -0.04223802 -0.00014275 -0.04843166   \n",
       "Equity(10 [ADM])   -0.01336835  0.01753074  0.00993158  0.02405739   \n",
       "Equity(11 [ADP])   -0.01057350 -0.00616905 -0.00351046 -0.00218630   \n",
       "Equity(12 [ADS])    0.01596979 -0.02290249  0.01812681  0.00269984   \n",
       "Equity(13 [ADSK])   0.04046916 -0.03266419  0.02070996  0.02100687   \n",
       "Equity(14 [AEE])    0.00729924 -0.00884432  0.02876494  0.02575176   \n",
       "Equity(15 [AEP])   -0.01334963 -0.00584932  0.03513664  0.02664964   \n",
       "Equity(16 [AES])   -0.01427757  0.01071751  0.04800697  0.00823278   \n",
       "Equity(17 [AET])   -0.08527159  0.06484179 -0.07164819  0.00852602   \n",
       "Equity(18 [AFL])    0.01378441 -0.00676370  0.00047075  0.00042919   \n",
       "Equity(19 [AGN])   -0.01375720  0.01729325  0.00910558  0.01765223   \n",
       "Equity(20 [AIG])   -0.00536267 -0.02808023  0.03227634 -0.01100650   \n",
       "Equity(21 [AIV])    0.02094801 -0.04206507 -0.02048654 -0.03732772   \n",
       "Equity(22 [AIZ])   -0.02121338 -0.01017076  0.02874684  0.01121282   \n",
       "Equity(23 [AJG])   -0.00142810 -0.00802982 -0.00533986 -0.00140466   \n",
       "Equity(24 [AKAM])  -0.07429360  0.00240076  0.12416841  0.13836518   \n",
       "Equity(25 [ALB])    0.04131905  0.09156602 -0.06656052 -0.01740400   \n",
       "Equity(26 [ALGN])   0.10784517  0.07096981 -0.05965948 -0.06617279   \n",
       "Equity(27 [ALK])    0.00033085  0.00597074  0.01458408  0.02170190   \n",
       "Equity(28 [ALL])   -0.00986285 -0.00905731  0.02499562 -0.00494904   \n",
       "Equity(29 [ALLE])  -0.00635063 -0.04124458 -0.00784737 -0.01976681   \n",
       "...                        ...         ...         ...         ...   \n",
       "Equity(460 [VRSN])  0.00062521  0.01354571  0.02242982  0.03594197   \n",
       "Equity(461 [VRTX]) -0.12627708  0.36184696 -0.14161962 -0.10440960   \n",
       "Equity(462 [VTR])   0.02497163 -0.03310961 -0.01353316 -0.02038055   \n",
       "Equity(463 [VZ])    0.00415716 -0.00898788  0.00645221 -0.01738755   \n",
       "Equity(464 [WAT])   0.02317906  0.01111012 -0.03735916  0.03053670   \n",
       "Equity(465 [WBA])  -0.02967145 -0.00855083 -0.02413786  0.01716925   \n",
       "Equity(466 [WDC])  -0.11248908  0.02938310  0.13499041  0.17141412   \n",
       "Equity(467 [WEC])   0.00086058 -0.01721494  0.02251708  0.01433085   \n",
       "Equity(468 [WFC])  -0.00880242 -0.02231278  0.02429464  0.00372331   \n",
       "Equity(469 [WHR])  -0.05450337  0.04108206  0.04115321  0.02808061   \n",
       "Equity(471 [WM])   -0.00692979  0.03223594 -0.01134834  0.03628231   \n",
       "Equity(472 [WMB])  -0.01039337 -0.00287563  0.03826935 -0.02475861   \n",
       "Equity(473 [WMT])  -0.04340883  0.02467536  0.01323727  0.01194552   \n",
       "Equity(474 [WRK])  -0.02071811  0.00905441  0.00186650 -0.01865369   \n",
       "Equity(475 [WU])   -0.00331322 -0.02121476  0.00574640 -0.03553201   \n",
       "Equity(476 [WY])   -0.00268823  0.02518978 -0.01532718 -0.02625075   \n",
       "Equity(477 [WYN])   0.01051755  0.02073259  0.01106532  0.01470477   \n",
       "Equity(478 [WYNN])  0.05793940  0.06955993 -0.05215021  0.00468932   \n",
       "Equity(479 [XEC])  -0.00217537 -0.10441731 -0.05669005  0.00593931   \n",
       "Equity(480 [XEL])  -0.00097559 -0.00596671  0.02197929  0.01863163   \n",
       "Equity(481 [XL])    0.00151969 -0.00052693  0.00744188  0.01978538   \n",
       "Equity(482 [XLNX]) -0.03587944 -0.04241793  0.00144974 -0.03148143   \n",
       "Equity(483 [XOM])  -0.01051455  0.01413654  0.00286959  0.00192552   \n",
       "Equity(484 [XRAY])  0.01167483  0.02288506 -0.02825392  0.01102642   \n",
       "Equity(485 [XRX])  -0.03324697  0.01915283 -0.01067988 -0.01247793   \n",
       "Equity(486 [XYL])  -0.00964275 -0.04118213 -0.05878742 -0.02300320   \n",
       "Equity(487 [YUM])  -0.01235304  0.00926070  0.00035906 -0.00496092   \n",
       "Equity(488 [ZBH])  -0.02675098  0.01827896 -0.04768582  0.01395948   \n",
       "Equity(489 [ZION]) -0.01158269 -0.03556539  0.00554836 -0.00341750   \n",
       "Equity(490 [ZTS])  -0.05612824 -0.01541907  0.00108249 -0.02396138   \n",
       "\n",
       "                            16          17          18          19  \n",
       "Equity(0 [A])      -0.01142920 -0.01174265  0.00526925 -0.00535269  \n",
       "Equity(1 [AAL])    -0.03310836  0.01398085 -0.04680674 -0.01599057  \n",
       "Equity(2 [AAP])    -0.01163585  0.05143999  0.05716915  0.08414961  \n",
       "Equity(3 [AAPL])   -0.03179158  0.09079374 -0.01118851  0.04291373  \n",
       "Equity(4 [ABBV])    0.01588559  0.04598554  0.01599288  0.06587978  \n",
       "Equity(5 [ABC])    -0.01834622 -0.01391370  0.01062042 -0.02739565  \n",
       "Equity(6 [ABT])    -0.03938064  0.01071208  0.01712006  0.00210689  \n",
       "Equity(7 [ACN])    -0.00285123 -0.01235874 -0.01400935 -0.03855653  \n",
       "Equity(8 [ADBE])    0.02127339 -0.03638845  0.00126811 -0.04844555  \n",
       "Equity(9 [ADI])     0.00374282  0.04583322  0.01483456  0.00768623  \n",
       "Equity(10 [ADM])   -0.02009143 -0.00246866  0.00264238 -0.00851815  \n",
       "Equity(11 [ADP])   -0.00363522  0.00584571  0.00578868 -0.02465380  \n",
       "Equity(12 [ADS])   -0.01166061 -0.02387829 -0.01844799  0.02639087  \n",
       "Equity(13 [ADSK])   0.05625388 -0.06442852 -0.03374250 -0.02718282  \n",
       "Equity(14 [AEE])    0.03531642 -0.00801202 -0.03297087 -0.03074790  \n",
       "Equity(15 [AEP])    0.03949487  0.00571290 -0.01621889 -0.01421124  \n",
       "Equity(16 [AES])    0.00968720 -0.02229136 -0.05731240 -0.01503171  \n",
       "Equity(17 [AET])    0.01958565  0.00069996  0.00650320 -0.05091908  \n",
       "Equity(18 [AFL])    0.00010718  0.00397769  0.01677661 -0.03209361  \n",
       "Equity(19 [AGN])   -0.02289392  0.02583835 -0.02092126  0.01964563  \n",
       "Equity(20 [AIG])   -0.00994737 -0.04884961 -0.01447059 -0.00092722  \n",
       "Equity(21 [AIV])   -0.01518008  0.02499635  0.04526409  0.06168561  \n",
       "Equity(22 [AIZ])    0.00889890 -0.01278457  0.00035505  0.00788631  \n",
       "Equity(23 [AJG])   -0.00386327 -0.01466289 -0.00523534  0.01165450  \n",
       "Equity(24 [AKAM])   0.00667736  0.00052245 -0.00203434  0.04370206  \n",
       "Equity(25 [ALB])   -0.04603229 -0.02452548 -0.02975526  0.05708918  \n",
       "Equity(26 [ALGN])   0.04902407  0.00156817 -0.03738565 -0.00223241  \n",
       "Equity(27 [ALK])    0.04257028  0.00789058  0.04963085 -0.04169300  \n",
       "Equity(28 [ALL])   -0.00115539  0.00082421  0.00224048 -0.00639780  \n",
       "Equity(29 [ALLE])  -0.00865976  0.03592991  0.00767178  0.03158662  \n",
       "...                        ...         ...         ...         ...  \n",
       "Equity(460 [VRSN]) -0.00752310 -0.00611545 -0.02595021 -0.00005537  \n",
       "Equity(461 [VRTX])  0.15669116  0.00258548  0.05374391 -0.10088761  \n",
       "Equity(462 [VTR])  -0.02035280 -0.00581734  0.04174183  0.02905358  \n",
       "Equity(463 [VZ])    0.00335631 -0.03321116 -0.03424556 -0.02031272  \n",
       "Equity(464 [WAT])  -0.01161567  0.05062677 -0.01607733 -0.02896756  \n",
       "Equity(465 [WBA])   0.02913337  0.03131836  0.01484323  0.00683342  \n",
       "Equity(466 [WDC])   0.11221658 -0.22112989 -0.05340130  0.27231589  \n",
       "Equity(467 [WEC])   0.04781420 -0.01020607 -0.01687023 -0.01798607  \n",
       "Equity(468 [WFC])  -0.00454128  0.00335586 -0.02606330  0.01015222  \n",
       "Equity(469 [WHR])   0.04912976  0.02732405  0.01817701  0.01086811  \n",
       "Equity(471 [WM])    0.01820702 -0.01988943  0.02403495  0.01042652  \n",
       "Equity(472 [WMB])  -0.02989245 -0.01712986 -0.10290158 -0.01224658  \n",
       "Equity(473 [WMT])  -0.02497356  0.00351902  0.00777862  0.01076198  \n",
       "Equity(474 [WRK])  -0.01239063  0.02357001 -0.02087232  0.04046773  \n",
       "Equity(475 [WU])   -0.00661356 -0.03045924  0.00995369 -0.04708063  \n",
       "Equity(476 [WY])   -0.02418712  0.00957536  0.01679332 -0.00412955  \n",
       "Equity(477 [WYN])  -0.00226587 -0.02256858 -0.03784605 -0.01748119  \n",
       "Equity(478 [WYNN]) -0.04338772  0.14131780 -0.02504257  0.02417878  \n",
       "Equity(479 [XEC])   0.06575714 -0.03770747  0.09486709 -0.06387098  \n",
       "Equity(480 [XEL])   0.04664665 -0.00826953 -0.01791475 -0.02072648  \n",
       "Equity(481 [XL])   -0.00164444  0.00315162  0.00519293 -0.03064259  \n",
       "Equity(482 [XLNX])  0.03558220  0.01661543  0.01022713 -0.00396583  \n",
       "Equity(483 [XOM])  -0.00324646  0.00012369  0.01694194  0.01003126  \n",
       "Equity(484 [XRAY])  0.01849776  0.00975355  0.00668087 -0.04636686  \n",
       "Equity(485 [XRX])   0.00098390 -0.04865041  0.01743092  0.00666409  \n",
       "Equity(486 [XYL])   0.00625647  0.04733302 -0.00256510  0.04937012  \n",
       "Equity(487 [YUM])  -0.01453755  0.01909012 -0.01126627 -0.00177409  \n",
       "Equity(488 [ZBH])   0.01018115  0.04125323  0.00671842 -0.01540844  \n",
       "Equity(489 [ZION])  0.00706111  0.00352290 -0.02193923  0.02188794  \n",
       "Equity(490 [ZTS])  -0.01026795  0.03682367  0.00833979  0.01500221  \n",
       "\n",
       "[490 rows x 20 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "risk_model = {}\n",
    "risk_model['factor_betas'] = factor_betas(pca, five_year_returns.columns.values, np.arange(num_factor_exposures))\n",
    "\n",
    "risk_model['factor_betas']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Factor Returns\n",
    "Implement `factor_returns` to get the factor returns from the PCA model using the returns data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def factor_returns(pca, returns, factor_return_indices, factor_return_columns):\n",
    "    \"\"\"\n",
    "    Get the factor returns from the PCA model.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    pca : PCA\n",
    "        Model fit to returns\n",
    "    returns : DataFrame\n",
    "        Returns for each ticker and date\n",
    "    factor_return_indices : 1 dimensional Ndarray\n",
    "        Factor return indices\n",
    "    factor_return_columns : 1 dimensional Ndarray\n",
    "        Factor return columns\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    factor_returns : DataFrame\n",
    "        Factor returns\n",
    "    \"\"\"\n",
    "    assert len(factor_return_indices.shape) == 1\n",
    "    assert len(factor_return_columns.shape) == 1\n",
    "    \n",
    "    return pd.DataFrame(pca.transform(returns),factor_return_indices,factor_return_columns)\n",
    "\n",
    "project_tests.test_factor_returns(factor_returns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's see what these factor returns looks like over time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f54f28baf98>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54f28f1ef0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "risk_model['factor_returns'] = factor_returns(\n",
    "    pca,\n",
    "    five_year_returns,\n",
    "    five_year_returns.index,\n",
    "    np.arange(num_factor_exposures))\n",
    "\n",
    "risk_model['factor_returns'].cumsum().plot(legend=None)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Factor Covariance Matrix\n",
    "Implement `factor_cov_matrix` to get the factor covariance matrix."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def factor_cov_matrix(factor_returns, ann_factor):\n",
    "    \"\"\"\n",
    "    Get the factor covariance matrix\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    factor_returns : DataFrame\n",
    "        Factor returns\n",
    "    ann_factor : int\n",
    "        Annualization factor\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    factor_cov_matrix : 2 dimensional Ndarray\n",
    "        Factor covariance matrix\n",
    "    \"\"\"\n",
    "    \n",
    "    return np.diag(factor_returns.var(axis=0,ddof=1) * ann_factor)\n",
    "\n",
    "\n",
    "project_tests.test_factor_cov_matrix(factor_cov_matrix)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "      <th>14</th>\n",
       "      <th>15</th>\n",
       "      <th>16</th>\n",
       "      <th>17</th>\n",
       "      <th>18</th>\n",
       "      <th>19</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>14.01830425</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>1.10591127</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.77099145</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.61798821</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.47589087</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.43653315</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.38732470</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.34930223</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.34350302</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.31674219</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.28186803</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.27627450</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.26857691</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.24981278</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.23329965</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.21393011</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.20845473</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.19480492</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.19126517</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.18725609</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            0          1          2          3          4          5   \\\n",
       "0  14.01830425 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "1   0.00000000 1.10591127 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "2   0.00000000 0.00000000 0.77099145 0.00000000 0.00000000 0.00000000   \n",
       "3   0.00000000 0.00000000 0.00000000 0.61798821 0.00000000 0.00000000   \n",
       "4   0.00000000 0.00000000 0.00000000 0.00000000 0.47589087 0.00000000   \n",
       "5   0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.43653315   \n",
       "6   0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "7   0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "8   0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "9   0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "10  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "11  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "12  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "13  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "14  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "15  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "16  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "17  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "18  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "19  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "\n",
       "           6          7          8          9          10         11  \\\n",
       "0  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "1  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "2  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "3  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "4  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "5  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "6  0.38732470 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "7  0.00000000 0.34930223 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "8  0.00000000 0.00000000 0.34350302 0.00000000 0.00000000 0.00000000   \n",
       "9  0.00000000 0.00000000 0.00000000 0.31674219 0.00000000 0.00000000   \n",
       "10 0.00000000 0.00000000 0.00000000 0.00000000 0.28186803 0.00000000   \n",
       "11 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.27627450   \n",
       "12 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "13 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "14 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "15 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "16 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "17 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "18 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "19 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "\n",
       "           12         13         14         15         16         17  \\\n",
       "0  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "1  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "2  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "3  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "4  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "5  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "6  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "7  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "8  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "9  0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "10 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "11 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "12 0.26857691 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "13 0.00000000 0.24981278 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "14 0.00000000 0.00000000 0.23329965 0.00000000 0.00000000 0.00000000   \n",
       "15 0.00000000 0.00000000 0.00000000 0.21393011 0.00000000 0.00000000   \n",
       "16 0.00000000 0.00000000 0.00000000 0.00000000 0.20845473 0.00000000   \n",
       "17 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.19480492   \n",
       "18 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "19 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000   \n",
       "\n",
       "           18         19  \n",
       "0  0.00000000 0.00000000  \n",
       "1  0.00000000 0.00000000  \n",
       "2  0.00000000 0.00000000  \n",
       "3  0.00000000 0.00000000  \n",
       "4  0.00000000 0.00000000  \n",
       "5  0.00000000 0.00000000  \n",
       "6  0.00000000 0.00000000  \n",
       "7  0.00000000 0.00000000  \n",
       "8  0.00000000 0.00000000  \n",
       "9  0.00000000 0.00000000  \n",
       "10 0.00000000 0.00000000  \n",
       "11 0.00000000 0.00000000  \n",
       "12 0.00000000 0.00000000  \n",
       "13 0.00000000 0.00000000  \n",
       "14 0.00000000 0.00000000  \n",
       "15 0.00000000 0.00000000  \n",
       "16 0.00000000 0.00000000  \n",
       "17 0.00000000 0.00000000  \n",
       "18 0.19126517 0.00000000  \n",
       "19 0.00000000 0.18725609  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ann_factor = 252\n",
    "# risk_model['factor_cov_matrix'] = factor_cov_matrix(risk_model['factor_returns'], ann_factor)\n",
    "risk_model['factor_cov_matrix'] = pd.DataFrame(factor_cov_matrix(risk_model['factor_returns'], ann_factor))\n",
    "\n",
    "risk_model['factor_cov_matrix']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Idiosyncratic Variance Matrix\n",
    "Implement `idiosyncratic_var_matrix` to get the idiosyncratic variance matrix."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def idiosyncratic_var_matrix(returns, factor_returns, factor_betas, ann_factor):\n",
    "    \"\"\"\n",
    "    Get the idiosyncratic variance matrix\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    returns : DataFrame\n",
    "        Returns for each ticker and date\n",
    "    factor_returns : DataFrame\n",
    "        Factor returns\n",
    "    factor_betas : DataFrame\n",
    "        Factor betas\n",
    "    ann_factor : int\n",
    "        Annualization factor\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    idiosyncratic_var_matrix : DataFrame\n",
    "        Idiosyncratic variance matrix\n",
    "    \"\"\"\n",
    "    returns_common = pd.DataFrame(np.dot(factor_returns, factor_betas.T),\n",
    "                                   returns.index,\n",
    "                                   returns.columns)    \n",
    "    \n",
    "    residuals = returns - returns_common\n",
    "    return pd.DataFrame(np.diag(np.var(residuals)) * ann_factor,\n",
    "                        returns.columns,\n",
    "                        returns.columns)\n",
    "\n",
    "\n",
    "project_tests.test_idiosyncratic_var_matrix(idiosyncratic_var_matrix)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <th>...</th>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>0.02272535</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.05190083</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.05431181</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.04801884</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.03040361</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01854504</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01481514</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02177470</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.03442125</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01898404</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(10 [ADM])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(11 [ADP])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(12 [ADS])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(13 [ADSK])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(14 [AEE])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(15 [AEP])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(16 [AES])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(17 [AET])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(18 [AFL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(19 [AGN])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(20 [AIG])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(21 [AIV])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(22 [AIZ])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(23 [AJG])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(24 [AKAM])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(25 [ALB])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(26 [ALGN])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(27 [ALK])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(28 [ALL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(29 [ALLE])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(460 [VRSN])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(461 [VRTX])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(462 [VTR])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(463 [VZ])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(464 [WAT])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(465 [WBA])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(466 [WDC])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(467 [WEC])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(468 [WFC])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(469 [WHR])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(471 [WM])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(472 [WMB])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(473 [WMT])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(474 [WRK])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(475 [WU])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(476 [WY])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(477 [WYN])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(478 [WYNN])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(479 [XEC])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(480 [XEL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.02051926</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02684299</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01059841</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.01537171</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.03946866</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.03191603</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.04385518</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02233019</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02337210</td>\n",
       "      <td>0.00000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.00000000</td>\n",
       "      <td>0.02735075</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>490 rows × 490 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Equity(0 [A])  Equity(1 [AAL])  Equity(2 [AAP])  \\\n",
       "Equity(0 [A])          0.02272535       0.00000000       0.00000000   \n",
       "Equity(1 [AAL])        0.00000000       0.05190083       0.00000000   \n",
       "Equity(2 [AAP])        0.00000000       0.00000000       0.05431181   \n",
       "Equity(3 [AAPL])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(4 [ABBV])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(5 [ABC])        0.00000000       0.00000000       0.00000000   \n",
       "Equity(6 [ABT])        0.00000000       0.00000000       0.00000000   \n",
       "Equity(7 [ACN])        0.00000000       0.00000000       0.00000000   \n",
       "Equity(8 [ADBE])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(9 [ADI])        0.00000000       0.00000000       0.00000000   \n",
       "Equity(10 [ADM])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(11 [ADP])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(12 [ADS])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(13 [ADSK])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(14 [AEE])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(15 [AEP])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(16 [AES])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(17 [AET])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(18 [AFL])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(19 [AGN])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(20 [AIG])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(21 [AIV])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(22 [AIZ])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(23 [AJG])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(24 [AKAM])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(25 [ALB])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(26 [ALGN])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(27 [ALK])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(28 [ALL])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(29 [ALLE])      0.00000000       0.00000000       0.00000000   \n",
       "...                           ...              ...              ...   \n",
       "Equity(460 [VRSN])     0.00000000       0.00000000       0.00000000   \n",
       "Equity(461 [VRTX])     0.00000000       0.00000000       0.00000000   \n",
       "Equity(462 [VTR])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(463 [VZ])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(464 [WAT])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(465 [WBA])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(466 [WDC])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(467 [WEC])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(468 [WFC])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(469 [WHR])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(471 [WM])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(472 [WMB])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(473 [WMT])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(474 [WRK])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(475 [WU])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(476 [WY])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(477 [WYN])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(478 [WYNN])     0.00000000       0.00000000       0.00000000   \n",
       "Equity(479 [XEC])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(480 [XEL])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(481 [XL])       0.00000000       0.00000000       0.00000000   \n",
       "Equity(482 [XLNX])     0.00000000       0.00000000       0.00000000   \n",
       "Equity(483 [XOM])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(484 [XRAY])     0.00000000       0.00000000       0.00000000   \n",
       "Equity(485 [XRX])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(486 [XYL])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(487 [YUM])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(488 [ZBH])      0.00000000       0.00000000       0.00000000   \n",
       "Equity(489 [ZION])     0.00000000       0.00000000       0.00000000   \n",
       "Equity(490 [ZTS])      0.00000000       0.00000000       0.00000000   \n",
       "\n",
       "                    Equity(3 [AAPL])  Equity(4 [ABBV])  Equity(5 [ABC])  \\\n",
       "Equity(0 [A])             0.00000000        0.00000000       0.00000000   \n",
       "Equity(1 [AAL])           0.00000000        0.00000000       0.00000000   \n",
       "Equity(2 [AAP])           0.00000000        0.00000000       0.00000000   \n",
       "Equity(3 [AAPL])          0.04801884        0.00000000       0.00000000   \n",
       "Equity(4 [ABBV])          0.00000000        0.03040361       0.00000000   \n",
       "Equity(5 [ABC])           0.00000000        0.00000000       0.01854504   \n",
       "Equity(6 [ABT])           0.00000000        0.00000000       0.00000000   \n",
       "Equity(7 [ACN])           0.00000000        0.00000000       0.00000000   \n",
       "Equity(8 [ADBE])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(9 [ADI])           0.00000000        0.00000000       0.00000000   \n",
       "Equity(10 [ADM])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(11 [ADP])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(12 [ADS])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(13 [ADSK])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(14 [AEE])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(15 [AEP])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(16 [AES])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(17 [AET])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(18 [AFL])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(19 [AGN])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(20 [AIG])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(21 [AIV])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(22 [AIZ])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(23 [AJG])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(24 [AKAM])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(25 [ALB])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(26 [ALGN])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(27 [ALK])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(28 [ALL])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(29 [ALLE])         0.00000000        0.00000000       0.00000000   \n",
       "...                              ...               ...              ...   \n",
       "Equity(460 [VRSN])        0.00000000        0.00000000       0.00000000   \n",
       "Equity(461 [VRTX])        0.00000000        0.00000000       0.00000000   \n",
       "Equity(462 [VTR])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(463 [VZ])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(464 [WAT])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(465 [WBA])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(466 [WDC])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(467 [WEC])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(468 [WFC])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(469 [WHR])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(471 [WM])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(472 [WMB])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(473 [WMT])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(474 [WRK])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(475 [WU])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(476 [WY])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(477 [WYN])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(478 [WYNN])        0.00000000        0.00000000       0.00000000   \n",
       "Equity(479 [XEC])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(480 [XEL])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(481 [XL])          0.00000000        0.00000000       0.00000000   \n",
       "Equity(482 [XLNX])        0.00000000        0.00000000       0.00000000   \n",
       "Equity(483 [XOM])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(484 [XRAY])        0.00000000        0.00000000       0.00000000   \n",
       "Equity(485 [XRX])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(486 [XYL])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(487 [YUM])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(488 [ZBH])         0.00000000        0.00000000       0.00000000   \n",
       "Equity(489 [ZION])        0.00000000        0.00000000       0.00000000   \n",
       "Equity(490 [ZTS])         0.00000000        0.00000000       0.00000000   \n",
       "\n",
       "                    Equity(6 [ABT])  Equity(7 [ACN])  Equity(8 [ADBE])  \\\n",
       "Equity(0 [A])            0.00000000       0.00000000        0.00000000   \n",
       "Equity(1 [AAL])          0.00000000       0.00000000        0.00000000   \n",
       "Equity(2 [AAP])          0.00000000       0.00000000        0.00000000   \n",
       "Equity(3 [AAPL])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(4 [ABBV])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(5 [ABC])          0.00000000       0.00000000        0.00000000   \n",
       "Equity(6 [ABT])          0.01481514       0.00000000        0.00000000   \n",
       "Equity(7 [ACN])          0.00000000       0.02177470        0.00000000   \n",
       "Equity(8 [ADBE])         0.00000000       0.00000000        0.03442125   \n",
       "Equity(9 [ADI])          0.00000000       0.00000000        0.00000000   \n",
       "Equity(10 [ADM])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(11 [ADP])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(12 [ADS])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(13 [ADSK])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(14 [AEE])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(15 [AEP])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(16 [AES])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(17 [AET])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(18 [AFL])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(19 [AGN])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(20 [AIG])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(21 [AIV])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(22 [AIZ])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(23 [AJG])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(24 [AKAM])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(25 [ALB])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(26 [ALGN])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(27 [ALK])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(28 [ALL])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(29 [ALLE])        0.00000000       0.00000000        0.00000000   \n",
       "...                             ...              ...               ...   \n",
       "Equity(460 [VRSN])       0.00000000       0.00000000        0.00000000   \n",
       "Equity(461 [VRTX])       0.00000000       0.00000000        0.00000000   \n",
       "Equity(462 [VTR])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(463 [VZ])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(464 [WAT])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(465 [WBA])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(466 [WDC])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(467 [WEC])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(468 [WFC])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(469 [WHR])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(471 [WM])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(472 [WMB])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(473 [WMT])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(474 [WRK])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(475 [WU])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(476 [WY])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(477 [WYN])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(478 [WYNN])       0.00000000       0.00000000        0.00000000   \n",
       "Equity(479 [XEC])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(480 [XEL])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(481 [XL])         0.00000000       0.00000000        0.00000000   \n",
       "Equity(482 [XLNX])       0.00000000       0.00000000        0.00000000   \n",
       "Equity(483 [XOM])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(484 [XRAY])       0.00000000       0.00000000        0.00000000   \n",
       "Equity(485 [XRX])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(486 [XYL])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(487 [YUM])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(488 [ZBH])        0.00000000       0.00000000        0.00000000   \n",
       "Equity(489 [ZION])       0.00000000       0.00000000        0.00000000   \n",
       "Equity(490 [ZTS])        0.00000000       0.00000000        0.00000000   \n",
       "\n",
       "                    Equity(9 [ADI])        ...          Equity(481 [XL])  \\\n",
       "Equity(0 [A])            0.00000000        ...                0.00000000   \n",
       "Equity(1 [AAL])          0.00000000        ...                0.00000000   \n",
       "Equity(2 [AAP])          0.00000000        ...                0.00000000   \n",
       "Equity(3 [AAPL])         0.00000000        ...                0.00000000   \n",
       "Equity(4 [ABBV])         0.00000000        ...                0.00000000   \n",
       "Equity(5 [ABC])          0.00000000        ...                0.00000000   \n",
       "Equity(6 [ABT])          0.00000000        ...                0.00000000   \n",
       "Equity(7 [ACN])          0.00000000        ...                0.00000000   \n",
       "Equity(8 [ADBE])         0.00000000        ...                0.00000000   \n",
       "Equity(9 [ADI])          0.01898404        ...                0.00000000   \n",
       "Equity(10 [ADM])         0.00000000        ...                0.00000000   \n",
       "Equity(11 [ADP])         0.00000000        ...                0.00000000   \n",
       "Equity(12 [ADS])         0.00000000        ...                0.00000000   \n",
       "Equity(13 [ADSK])        0.00000000        ...                0.00000000   \n",
       "Equity(14 [AEE])         0.00000000        ...                0.00000000   \n",
       "Equity(15 [AEP])         0.00000000        ...                0.00000000   \n",
       "Equity(16 [AES])         0.00000000        ...                0.00000000   \n",
       "Equity(17 [AET])         0.00000000        ...                0.00000000   \n",
       "Equity(18 [AFL])         0.00000000        ...                0.00000000   \n",
       "Equity(19 [AGN])         0.00000000        ...                0.00000000   \n",
       "Equity(20 [AIG])         0.00000000        ...                0.00000000   \n",
       "Equity(21 [AIV])         0.00000000        ...                0.00000000   \n",
       "Equity(22 [AIZ])         0.00000000        ...                0.00000000   \n",
       "Equity(23 [AJG])         0.00000000        ...                0.00000000   \n",
       "Equity(24 [AKAM])        0.00000000        ...                0.00000000   \n",
       "Equity(25 [ALB])         0.00000000        ...                0.00000000   \n",
       "Equity(26 [ALGN])        0.00000000        ...                0.00000000   \n",
       "Equity(27 [ALK])         0.00000000        ...                0.00000000   \n",
       "Equity(28 [ALL])         0.00000000        ...                0.00000000   \n",
       "Equity(29 [ALLE])        0.00000000        ...                0.00000000   \n",
       "...                             ...        ...                       ...   \n",
       "Equity(460 [VRSN])       0.00000000        ...                0.00000000   \n",
       "Equity(461 [VRTX])       0.00000000        ...                0.00000000   \n",
       "Equity(462 [VTR])        0.00000000        ...                0.00000000   \n",
       "Equity(463 [VZ])         0.00000000        ...                0.00000000   \n",
       "Equity(464 [WAT])        0.00000000        ...                0.00000000   \n",
       "Equity(465 [WBA])        0.00000000        ...                0.00000000   \n",
       "Equity(466 [WDC])        0.00000000        ...                0.00000000   \n",
       "Equity(467 [WEC])        0.00000000        ...                0.00000000   \n",
       "Equity(468 [WFC])        0.00000000        ...                0.00000000   \n",
       "Equity(469 [WHR])        0.00000000        ...                0.00000000   \n",
       "Equity(471 [WM])         0.00000000        ...                0.00000000   \n",
       "Equity(472 [WMB])        0.00000000        ...                0.00000000   \n",
       "Equity(473 [WMT])        0.00000000        ...                0.00000000   \n",
       "Equity(474 [WRK])        0.00000000        ...                0.00000000   \n",
       "Equity(475 [WU])         0.00000000        ...                0.00000000   \n",
       "Equity(476 [WY])         0.00000000        ...                0.00000000   \n",
       "Equity(477 [WYN])        0.00000000        ...                0.00000000   \n",
       "Equity(478 [WYNN])       0.00000000        ...                0.00000000   \n",
       "Equity(479 [XEC])        0.00000000        ...                0.00000000   \n",
       "Equity(480 [XEL])        0.00000000        ...                0.00000000   \n",
       "Equity(481 [XL])         0.00000000        ...                0.02051926   \n",
       "Equity(482 [XLNX])       0.00000000        ...                0.00000000   \n",
       "Equity(483 [XOM])        0.00000000        ...                0.00000000   \n",
       "Equity(484 [XRAY])       0.00000000        ...                0.00000000   \n",
       "Equity(485 [XRX])        0.00000000        ...                0.00000000   \n",
       "Equity(486 [XYL])        0.00000000        ...                0.00000000   \n",
       "Equity(487 [YUM])        0.00000000        ...                0.00000000   \n",
       "Equity(488 [ZBH])        0.00000000        ...                0.00000000   \n",
       "Equity(489 [ZION])       0.00000000        ...                0.00000000   \n",
       "Equity(490 [ZTS])        0.00000000        ...                0.00000000   \n",
       "\n",
       "                    Equity(482 [XLNX])  Equity(483 [XOM])  Equity(484 [XRAY])  \\\n",
       "Equity(0 [A])               0.00000000         0.00000000          0.00000000   \n",
       "Equity(1 [AAL])             0.00000000         0.00000000          0.00000000   \n",
       "Equity(2 [AAP])             0.00000000         0.00000000          0.00000000   \n",
       "Equity(3 [AAPL])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(4 [ABBV])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(5 [ABC])             0.00000000         0.00000000          0.00000000   \n",
       "Equity(6 [ABT])             0.00000000         0.00000000          0.00000000   \n",
       "Equity(7 [ACN])             0.00000000         0.00000000          0.00000000   \n",
       "Equity(8 [ADBE])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(9 [ADI])             0.00000000         0.00000000          0.00000000   \n",
       "Equity(10 [ADM])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(11 [ADP])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(12 [ADS])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(13 [ADSK])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(14 [AEE])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(15 [AEP])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(16 [AES])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(17 [AET])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(18 [AFL])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(19 [AGN])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(20 [AIG])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(21 [AIV])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(22 [AIZ])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(23 [AJG])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(24 [AKAM])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(25 [ALB])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(26 [ALGN])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(27 [ALK])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(28 [ALL])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(29 [ALLE])           0.00000000         0.00000000          0.00000000   \n",
       "...                                ...                ...                 ...   \n",
       "Equity(460 [VRSN])          0.00000000         0.00000000          0.00000000   \n",
       "Equity(461 [VRTX])          0.00000000         0.00000000          0.00000000   \n",
       "Equity(462 [VTR])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(463 [VZ])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(464 [WAT])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(465 [WBA])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(466 [WDC])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(467 [WEC])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(468 [WFC])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(469 [WHR])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(471 [WM])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(472 [WMB])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(473 [WMT])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(474 [WRK])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(475 [WU])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(476 [WY])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(477 [WYN])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(478 [WYNN])          0.00000000         0.00000000          0.00000000   \n",
       "Equity(479 [XEC])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(480 [XEL])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(481 [XL])            0.00000000         0.00000000          0.00000000   \n",
       "Equity(482 [XLNX])          0.02684299         0.00000000          0.00000000   \n",
       "Equity(483 [XOM])           0.00000000         0.01059841          0.00000000   \n",
       "Equity(484 [XRAY])          0.00000000         0.00000000          0.01537171   \n",
       "Equity(485 [XRX])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(486 [XYL])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(487 [YUM])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(488 [ZBH])           0.00000000         0.00000000          0.00000000   \n",
       "Equity(489 [ZION])          0.00000000         0.00000000          0.00000000   \n",
       "Equity(490 [ZTS])           0.00000000         0.00000000          0.00000000   \n",
       "\n",
       "                    Equity(485 [XRX])  Equity(486 [XYL])  Equity(487 [YUM])  \\\n",
       "Equity(0 [A])              0.00000000         0.00000000         0.00000000   \n",
       "Equity(1 [AAL])            0.00000000         0.00000000         0.00000000   \n",
       "Equity(2 [AAP])            0.00000000         0.00000000         0.00000000   \n",
       "Equity(3 [AAPL])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(4 [ABBV])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(5 [ABC])            0.00000000         0.00000000         0.00000000   \n",
       "Equity(6 [ABT])            0.00000000         0.00000000         0.00000000   \n",
       "Equity(7 [ACN])            0.00000000         0.00000000         0.00000000   \n",
       "Equity(8 [ADBE])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(9 [ADI])            0.00000000         0.00000000         0.00000000   \n",
       "Equity(10 [ADM])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(11 [ADP])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(12 [ADS])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(13 [ADSK])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(14 [AEE])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(15 [AEP])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(16 [AES])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(17 [AET])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(18 [AFL])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(19 [AGN])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(20 [AIG])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(21 [AIV])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(22 [AIZ])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(23 [AJG])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(24 [AKAM])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(25 [ALB])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(26 [ALGN])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(27 [ALK])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(28 [ALL])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(29 [ALLE])          0.00000000         0.00000000         0.00000000   \n",
       "...                               ...                ...                ...   \n",
       "Equity(460 [VRSN])         0.00000000         0.00000000         0.00000000   \n",
       "Equity(461 [VRTX])         0.00000000         0.00000000         0.00000000   \n",
       "Equity(462 [VTR])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(463 [VZ])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(464 [WAT])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(465 [WBA])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(466 [WDC])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(467 [WEC])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(468 [WFC])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(469 [WHR])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(471 [WM])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(472 [WMB])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(473 [WMT])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(474 [WRK])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(475 [WU])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(476 [WY])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(477 [WYN])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(478 [WYNN])         0.00000000         0.00000000         0.00000000   \n",
       "Equity(479 [XEC])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(480 [XEL])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(481 [XL])           0.00000000         0.00000000         0.00000000   \n",
       "Equity(482 [XLNX])         0.00000000         0.00000000         0.00000000   \n",
       "Equity(483 [XOM])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(484 [XRAY])         0.00000000         0.00000000         0.00000000   \n",
       "Equity(485 [XRX])          0.03946866         0.00000000         0.00000000   \n",
       "Equity(486 [XYL])          0.00000000         0.03191603         0.00000000   \n",
       "Equity(487 [YUM])          0.00000000         0.00000000         0.04385518   \n",
       "Equity(488 [ZBH])          0.00000000         0.00000000         0.00000000   \n",
       "Equity(489 [ZION])         0.00000000         0.00000000         0.00000000   \n",
       "Equity(490 [ZTS])          0.00000000         0.00000000         0.00000000   \n",
       "\n",
       "                    Equity(488 [ZBH])  Equity(489 [ZION])  Equity(490 [ZTS])  \n",
       "Equity(0 [A])              0.00000000          0.00000000         0.00000000  \n",
       "Equity(1 [AAL])            0.00000000          0.00000000         0.00000000  \n",
       "Equity(2 [AAP])            0.00000000          0.00000000         0.00000000  \n",
       "Equity(3 [AAPL])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(4 [ABBV])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(5 [ABC])            0.00000000          0.00000000         0.00000000  \n",
       "Equity(6 [ABT])            0.00000000          0.00000000         0.00000000  \n",
       "Equity(7 [ACN])            0.00000000          0.00000000         0.00000000  \n",
       "Equity(8 [ADBE])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(9 [ADI])            0.00000000          0.00000000         0.00000000  \n",
       "Equity(10 [ADM])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(11 [ADP])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(12 [ADS])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(13 [ADSK])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(14 [AEE])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(15 [AEP])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(16 [AES])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(17 [AET])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(18 [AFL])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(19 [AGN])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(20 [AIG])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(21 [AIV])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(22 [AIZ])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(23 [AJG])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(24 [AKAM])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(25 [ALB])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(26 [ALGN])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(27 [ALK])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(28 [ALL])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(29 [ALLE])          0.00000000          0.00000000         0.00000000  \n",
       "...                               ...                 ...                ...  \n",
       "Equity(460 [VRSN])         0.00000000          0.00000000         0.00000000  \n",
       "Equity(461 [VRTX])         0.00000000          0.00000000         0.00000000  \n",
       "Equity(462 [VTR])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(463 [VZ])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(464 [WAT])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(465 [WBA])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(466 [WDC])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(467 [WEC])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(468 [WFC])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(469 [WHR])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(471 [WM])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(472 [WMB])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(473 [WMT])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(474 [WRK])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(475 [WU])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(476 [WY])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(477 [WYN])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(478 [WYNN])         0.00000000          0.00000000         0.00000000  \n",
       "Equity(479 [XEC])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(480 [XEL])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(481 [XL])           0.00000000          0.00000000         0.00000000  \n",
       "Equity(482 [XLNX])         0.00000000          0.00000000         0.00000000  \n",
       "Equity(483 [XOM])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(484 [XRAY])         0.00000000          0.00000000         0.00000000  \n",
       "Equity(485 [XRX])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(486 [XYL])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(487 [YUM])          0.00000000          0.00000000         0.00000000  \n",
       "Equity(488 [ZBH])          0.02233019          0.00000000         0.00000000  \n",
       "Equity(489 [ZION])         0.00000000          0.02337210         0.00000000  \n",
       "Equity(490 [ZTS])          0.00000000          0.00000000         0.02735075  \n",
       "\n",
       "[490 rows x 490 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "risk_model['idiosyncratic_var_matrix'] = idiosyncratic_var_matrix(five_year_returns,\n",
    "                                                                  risk_model['factor_returns'],\n",
    "                                                                  risk_model['factor_betas'],\n",
    "                                                                  ann_factor)\n",
    "\n",
    "risk_model['idiosyncratic_var_matrix']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Idiosyncratic Variance Vector\n",
    "Implement `idiosyncratic_var_vector` to get the idiosyncratic variance Vector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def idiosyncratic_var_vector(returns, idiosyncratic_var_matrix):\n",
    "    \"\"\"\n",
    "    Get the idiosyncratic variance vector\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    returns : DataFrame\n",
    "        Returns for each ticker and date\n",
    "    idiosyncratic_var_matrix : DataFrame\n",
    "        Idiosyncratic variance matrix\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    idiosyncratic_var_vector : DataFrame\n",
    "        Idiosyncratic variance Vector\n",
    "    \"\"\"    \n",
    "    \n",
    "    return pd.DataFrame(np.diagonal(idiosyncratic_var_matrix), returns.columns)\n",
    "\n",
    "\n",
    "project_tests.test_idiosyncratic_var_vector(idiosyncratic_var_vector)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>0.02272535</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>0.05190083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>0.05431181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>0.04801884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>0.03040361</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <td>0.01854504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <td>0.01481514</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <td>0.02177470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <td>0.03442125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <td>0.01898404</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(10 [ADM])</th>\n",
       "      <td>0.02951444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(11 [ADP])</th>\n",
       "      <td>0.00828126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(12 [ADS])</th>\n",
       "      <td>0.02703428</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(13 [ADSK])</th>\n",
       "      <td>0.05224263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(14 [AEE])</th>\n",
       "      <td>0.00961462</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(15 [AEP])</th>\n",
       "      <td>0.00800376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(16 [AES])</th>\n",
       "      <td>0.03079578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(17 [AET])</th>\n",
       "      <td>0.03579077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(18 [AFL])</th>\n",
       "      <td>0.01894194</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(19 [AGN])</th>\n",
       "      <td>0.04211602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(20 [AIG])</th>\n",
       "      <td>0.03317545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(21 [AIV])</th>\n",
       "      <td>0.01468534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(22 [AIZ])</th>\n",
       "      <td>0.02061951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(23 [AJG])</th>\n",
       "      <td>0.01157320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(24 [AKAM])</th>\n",
       "      <td>0.09690009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(25 [ALB])</th>\n",
       "      <td>0.04106647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(26 [ALGN])</th>\n",
       "      <td>0.10508661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(27 [ALK])</th>\n",
       "      <td>0.03388559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(28 [ALL])</th>\n",
       "      <td>0.01674196</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(29 [ALLE])</th>\n",
       "      <td>0.01456581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(460 [VRSN])</th>\n",
       "      <td>0.04356330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(461 [VRTX])</th>\n",
       "      <td>0.01133104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(462 [VTR])</th>\n",
       "      <td>0.01239277</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(463 [VZ])</th>\n",
       "      <td>0.01826124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(464 [WAT])</th>\n",
       "      <td>0.02519289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(465 [WBA])</th>\n",
       "      <td>0.04833797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(466 [WDC])</th>\n",
       "      <td>0.04271307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(467 [WEC])</th>\n",
       "      <td>0.00660139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(468 [WFC])</th>\n",
       "      <td>0.01138111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(469 [WHR])</th>\n",
       "      <td>0.05778786</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(471 [WM])</th>\n",
       "      <td>0.01511105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(472 [WMB])</th>\n",
       "      <td>0.05868578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(473 [WMT])</th>\n",
       "      <td>0.01608075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(474 [WRK])</th>\n",
       "      <td>0.00835928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(475 [WU])</th>\n",
       "      <td>0.04770344</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(476 [WY])</th>\n",
       "      <td>0.02646036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(477 [WYN])</th>\n",
       "      <td>0.02429392</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(478 [WYNN])</th>\n",
       "      <td>0.05814062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(479 [XEC])</th>\n",
       "      <td>0.04861817</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(480 [XEL])</th>\n",
       "      <td>0.00534852</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <td>0.02051926</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <td>0.02684299</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <td>0.01059841</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <td>0.01537171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <td>0.03946866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <td>0.03191603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <td>0.04385518</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <td>0.02233019</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <td>0.02337210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "      <td>0.02735075</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>490 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            0\n",
       "Equity(0 [A])      0.02272535\n",
       "Equity(1 [AAL])    0.05190083\n",
       "Equity(2 [AAP])    0.05431181\n",
       "Equity(3 [AAPL])   0.04801884\n",
       "Equity(4 [ABBV])   0.03040361\n",
       "Equity(5 [ABC])    0.01854504\n",
       "Equity(6 [ABT])    0.01481514\n",
       "Equity(7 [ACN])    0.02177470\n",
       "Equity(8 [ADBE])   0.03442125\n",
       "Equity(9 [ADI])    0.01898404\n",
       "Equity(10 [ADM])   0.02951444\n",
       "Equity(11 [ADP])   0.00828126\n",
       "Equity(12 [ADS])   0.02703428\n",
       "Equity(13 [ADSK])  0.05224263\n",
       "Equity(14 [AEE])   0.00961462\n",
       "Equity(15 [AEP])   0.00800376\n",
       "Equity(16 [AES])   0.03079578\n",
       "Equity(17 [AET])   0.03579077\n",
       "Equity(18 [AFL])   0.01894194\n",
       "Equity(19 [AGN])   0.04211602\n",
       "Equity(20 [AIG])   0.03317545\n",
       "Equity(21 [AIV])   0.01468534\n",
       "Equity(22 [AIZ])   0.02061951\n",
       "Equity(23 [AJG])   0.01157320\n",
       "Equity(24 [AKAM])  0.09690009\n",
       "Equity(25 [ALB])   0.04106647\n",
       "Equity(26 [ALGN])  0.10508661\n",
       "Equity(27 [ALK])   0.03388559\n",
       "Equity(28 [ALL])   0.01674196\n",
       "Equity(29 [ALLE])  0.01456581\n",
       "...                       ...\n",
       "Equity(460 [VRSN]) 0.04356330\n",
       "Equity(461 [VRTX]) 0.01133104\n",
       "Equity(462 [VTR])  0.01239277\n",
       "Equity(463 [VZ])   0.01826124\n",
       "Equity(464 [WAT])  0.02519289\n",
       "Equity(465 [WBA])  0.04833797\n",
       "Equity(466 [WDC])  0.04271307\n",
       "Equity(467 [WEC])  0.00660139\n",
       "Equity(468 [WFC])  0.01138111\n",
       "Equity(469 [WHR])  0.05778786\n",
       "Equity(471 [WM])   0.01511105\n",
       "Equity(472 [WMB])  0.05868578\n",
       "Equity(473 [WMT])  0.01608075\n",
       "Equity(474 [WRK])  0.00835928\n",
       "Equity(475 [WU])   0.04770344\n",
       "Equity(476 [WY])   0.02646036\n",
       "Equity(477 [WYN])  0.02429392\n",
       "Equity(478 [WYNN]) 0.05814062\n",
       "Equity(479 [XEC])  0.04861817\n",
       "Equity(480 [XEL])  0.00534852\n",
       "Equity(481 [XL])   0.02051926\n",
       "Equity(482 [XLNX]) 0.02684299\n",
       "Equity(483 [XOM])  0.01059841\n",
       "Equity(484 [XRAY]) 0.01537171\n",
       "Equity(485 [XRX])  0.03946866\n",
       "Equity(486 [XYL])  0.03191603\n",
       "Equity(487 [YUM])  0.04385518\n",
       "Equity(488 [ZBH])  0.02233019\n",
       "Equity(489 [ZION]) 0.02337210\n",
       "Equity(490 [ZTS])  0.02735075\n",
       "\n",
       "[490 rows x 1 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "risk_model['idiosyncratic_var_vector'] = idiosyncratic_var_vector(five_year_returns, risk_model['idiosyncratic_var_matrix'])\n",
    "\n",
    "risk_model['idiosyncratic_var_vector']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predict using the Risk Model\n",
    "Using the data we calculated in the risk model, implement `predict_portfolio_risk` to predict the portfolio risk using the formula $ \\sqrt{X^{T}(BFB^{T} + S)X} $ where:\n",
    "- $ X $ is the portfolio weights\n",
    "- $ B $ is the factor betas\n",
    "- $ F $ is the factor covariance matrix\n",
    "- $ S $ is the idiosyncratic variance matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def predict_portfolio_risk(factor_betas, factor_cov_matrix, idiosyncratic_var_matrix, weights):\n",
    "    \"\"\"\n",
    "    Get the predicted portfolio risk\n",
    "    \n",
    "    Formula for predicted portfolio risk is sqrt(X.T(BFB.T + S)X) where:\n",
    "      X is the portfolio weights\n",
    "      B is the factor betas\n",
    "      F is the factor covariance matrix\n",
    "      S is the idiosyncratic variance matrix\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    factor_betas : DataFrame\n",
    "        Factor betas\n",
    "    factor_cov_matrix : 2 dimensional Ndarray\n",
    "        Factor covariance matrix\n",
    "    idiosyncratic_var_matrix : DataFrame\n",
    "        Idiosyncratic variance matrix\n",
    "    weights : DataFrame\n",
    "        Portfolio weights\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    predicted_portfolio_risk : float\n",
    "        Predicted portfolio risk\n",
    "    \"\"\"\n",
    "    assert len(factor_cov_matrix.shape) == 2\n",
    "    \n",
    "    return np.sqrt(weights.T.dot(factor_betas.dot(factor_cov_matrix.dot(factor_betas.T)) + idiosyncratic_var_matrix).dot(weights)).iloc[0][0]\n",
    "\n",
    "\n",
    "project_tests.test_predict_portfolio_risk(predict_portfolio_risk)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's see what the portfolio risk would be if we had even weights across all stocks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.16094824687040474"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_weights = pd.DataFrame(np.repeat(1/len(universe_tickers), len(universe_tickers)), universe_tickers)\n",
    "\n",
    "predict_portfolio_risk(\n",
    "    risk_model['factor_betas'],\n",
    "    risk_model['factor_cov_matrix'],\n",
    "    risk_model['idiosyncratic_var_matrix'],\n",
    "    all_weights)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Create Alpha Factors\n",
    "With the profile risk calculated, it's time to start working on the alpha factors. In this project, we'll create the following factors:\n",
    "- Momentum 1 Year Factor\n",
    "- Mean Reversion 5 Day Sector Neutral Factor\n",
    "- Mean Reversion 5 Day Sector Neutral Smoothed Factor\n",
    "- Overnight Sentiment Factor\n",
    "- Overnight Sentiment Smoothed Factor\n",
    "\n",
    "## Momentum 1 Year Factor\n",
    "Each factor will have a hypothesis that goes with it. For this factor, it is \"Higher past 12-month (252 days) returns are proportional to future return.\" Using that hypothesis, we've generated this code:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from zipline.pipeline.factors import Returns\n",
    "\n",
    "def momentum_1yr(window_length, universe, sector):\n",
    "    return Returns(window_length=window_length, mask=universe) \\\n",
    "        .demean(groupby=sector) \\\n",
    "        .rank() \\\n",
    "        .zscore()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Mean Reversion 5 Day Sector Neutral Factor\n",
    "Now it's time for you to implement `mean_reversion_5day_sector_neutral` using the hypothesis \"Short-term outperformers(underperformers) compared to their sector will revert.\" Use the returns data from `universe`, demean using the sector data to partition, rank, then converted to a zscore."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Integration Test on pipeline:\n",
      "> start_dat = pd.Timestamp('2015-01-05', tz='utc')\n",
      "> end_date = pd.Timestamp('2015-01-07', tz='utc')\n",
      "> universe = AverageDollarVolume(window_length=2).top(4)\n",
      "> factor = mean_reversion_5day_sector_neutral(\n",
      "    window_length=3,\n",
      "    universe=universe,\n",
      "    sector=project_helper.Sector())\n",
      "> pipeline.add(factor, 'Mean_Reversion_5Day_Sector_Neutral')\n",
      "> engine.run_pipeline(pipeline, start_dat, end_date)\n",
      "\n",
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def mean_reversion_5day_sector_neutral(window_length, universe, sector):\n",
    "    \"\"\"\n",
    "    Generate the mean reversion 5 day sector neutral factor\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    window_length : int\n",
    "        Returns window length\n",
    "    universe : Zipline Filter\n",
    "        Universe of stocks filter\n",
    "    sector : Zipline Classifier\n",
    "        Sector classifier\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    factor : Zipline Factor\n",
    "        Mean reversion 5 day sector neutral factor\n",
    "    \"\"\"\n",
    "    return momentum_1yr(window_length, universe,sector) * -1\n",
    "\n",
    "\n",
    "project_tests.test_mean_reversion_5day_sector_neutral(mean_reversion_5day_sector_neutral)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's see what some of the factor data looks like. For calculating factors, we'll be looking back 2 years.\n",
    "\n",
    "**Note:** _Going back 2 years falls on a day when the market is closed. Pipeline package doesn't handle start or end dates that don't fall on days when the market is open. To fix this, we went back 2 extra days to fall on the next day when the market is open._"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Mean_Reversion_5Day_Sector_Neutral</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"30\" valign=\"top\">2014-01-03 00:00:00+00:00</th>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>0.85326482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>1.62630815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>0.64906469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>1.40752230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>1.45857233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <td>0.14585723</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <td>-0.30630019</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <td>0.88243626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <td>-0.06563576</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <td>1.67006532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(10 [ADM])</th>\n",
       "      <td>1.18144359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(11 [ADP])</th>\n",
       "      <td>0.24066444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(12 [ADS])</th>\n",
       "      <td>-1.69194391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(13 [ADSK])</th>\n",
       "      <td>-0.35735022</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(14 [AEE])</th>\n",
       "      <td>0.34276450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(15 [AEP])</th>\n",
       "      <td>-0.45215742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(16 [AES])</th>\n",
       "      <td>0.50320746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(17 [AET])</th>\n",
       "      <td>0.79492192</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(18 [AFL])</th>\n",
       "      <td>1.15227214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(19 [AGN])</th>\n",
       "      <td>-1.48045092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(20 [AIG])</th>\n",
       "      <td>-0.27712874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(21 [AIV])</th>\n",
       "      <td>-0.37922881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(22 [AIZ])</th>\n",
       "      <td>0.91890057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(23 [AJG])</th>\n",
       "      <td>-0.82409337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(24 [AKAM])</th>\n",
       "      <td>1.22520076</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(25 [ALB])</th>\n",
       "      <td>0.69282186</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(26 [ALGN])</th>\n",
       "      <td>1.08663639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(27 [ALK])</th>\n",
       "      <td>-1.30542224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(28 [ALL])</th>\n",
       "      <td>-0.48862173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(29 [ALLE])</th>\n",
       "      <td>1.42940089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"30\" valign=\"top\">2016-01-05 00:00:00+00:00</th>\n",
       "      <th>Equity(460 [VRSN])</th>\n",
       "      <td>1.48614551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(461 [VRTX])</th>\n",
       "      <td>-1.15826688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(462 [VTR])</th>\n",
       "      <td>-1.55742347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(463 [VZ])</th>\n",
       "      <td>-1.42912314</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(464 [WAT])</th>\n",
       "      <td>0.47399845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(465 [WBA])</th>\n",
       "      <td>1.21528925</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(466 [WDC])</th>\n",
       "      <td>-1.59306245</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(467 [WEC])</th>\n",
       "      <td>-0.13899203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(468 [WFC])</th>\n",
       "      <td>0.35995371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(469 [WHR])</th>\n",
       "      <td>-1.15113908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(471 [WM])</th>\n",
       "      <td>0.38133710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(472 [WMB])</th>\n",
       "      <td>-1.69285160</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(473 [WMT])</th>\n",
       "      <td>-1.52891228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(474 [WRK])</th>\n",
       "      <td>-1.32220619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(475 [WU])</th>\n",
       "      <td>0.54527641</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(476 [WY])</th>\n",
       "      <td>0.08196966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(477 [WYN])</th>\n",
       "      <td>1.19390586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(478 [WYNN])</th>\n",
       "      <td>-1.49327330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(479 [XEC])</th>\n",
       "      <td>0.30293134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(480 [XEL])</th>\n",
       "      <td>0.02494729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <td>1.06560553</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <td>1.34358958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <td>1.60019024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <td>1.22241705</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <td>0.33144252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <td>-0.13186423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <td>0.18175880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <td>-1.40061195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <td>0.52389302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "      <td>-0.93730520</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>244259 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              Mean_Reversion_5Day_Sector_Neutral\n",
       "2014-01-03 00:00:00+00:00 Equity(0 [A])                               0.85326482\n",
       "                          Equity(1 [AAL])                             1.62630815\n",
       "                          Equity(2 [AAP])                             0.64906469\n",
       "                          Equity(3 [AAPL])                            1.40752230\n",
       "                          Equity(4 [ABBV])                            1.45857233\n",
       "                          Equity(5 [ABC])                             0.14585723\n",
       "                          Equity(6 [ABT])                            -0.30630019\n",
       "                          Equity(7 [ACN])                             0.88243626\n",
       "                          Equity(8 [ADBE])                           -0.06563576\n",
       "                          Equity(9 [ADI])                             1.67006532\n",
       "                          Equity(10 [ADM])                            1.18144359\n",
       "                          Equity(11 [ADP])                            0.24066444\n",
       "                          Equity(12 [ADS])                           -1.69194391\n",
       "                          Equity(13 [ADSK])                          -0.35735022\n",
       "                          Equity(14 [AEE])                            0.34276450\n",
       "                          Equity(15 [AEP])                           -0.45215742\n",
       "                          Equity(16 [AES])                            0.50320746\n",
       "                          Equity(17 [AET])                            0.79492192\n",
       "                          Equity(18 [AFL])                            1.15227214\n",
       "                          Equity(19 [AGN])                           -1.48045092\n",
       "                          Equity(20 [AIG])                           -0.27712874\n",
       "                          Equity(21 [AIV])                           -0.37922881\n",
       "                          Equity(22 [AIZ])                            0.91890057\n",
       "                          Equity(23 [AJG])                           -0.82409337\n",
       "                          Equity(24 [AKAM])                           1.22520076\n",
       "                          Equity(25 [ALB])                            0.69282186\n",
       "                          Equity(26 [ALGN])                           1.08663639\n",
       "                          Equity(27 [ALK])                           -1.30542224\n",
       "                          Equity(28 [ALL])                           -0.48862173\n",
       "                          Equity(29 [ALLE])                           1.42940089\n",
       "...                                                                          ...\n",
       "2016-01-05 00:00:00+00:00 Equity(460 [VRSN])                          1.48614551\n",
       "                          Equity(461 [VRTX])                         -1.15826688\n",
       "                          Equity(462 [VTR])                          -1.55742347\n",
       "                          Equity(463 [VZ])                           -1.42912314\n",
       "                          Equity(464 [WAT])                           0.47399845\n",
       "                          Equity(465 [WBA])                           1.21528925\n",
       "                          Equity(466 [WDC])                          -1.59306245\n",
       "                          Equity(467 [WEC])                          -0.13899203\n",
       "                          Equity(468 [WFC])                           0.35995371\n",
       "                          Equity(469 [WHR])                          -1.15113908\n",
       "                          Equity(471 [WM])                            0.38133710\n",
       "                          Equity(472 [WMB])                          -1.69285160\n",
       "                          Equity(473 [WMT])                          -1.52891228\n",
       "                          Equity(474 [WRK])                          -1.32220619\n",
       "                          Equity(475 [WU])                            0.54527641\n",
       "                          Equity(476 [WY])                            0.08196966\n",
       "                          Equity(477 [WYN])                           1.19390586\n",
       "                          Equity(478 [WYNN])                         -1.49327330\n",
       "                          Equity(479 [XEC])                           0.30293134\n",
       "                          Equity(480 [XEL])                           0.02494729\n",
       "                          Equity(481 [XL])                            1.06560553\n",
       "                          Equity(482 [XLNX])                          1.34358958\n",
       "                          Equity(483 [XOM])                           1.60019024\n",
       "                          Equity(484 [XRAY])                          1.22241705\n",
       "                          Equity(485 [XRX])                           0.33144252\n",
       "                          Equity(486 [XYL])                          -0.13186423\n",
       "                          Equity(487 [YUM])                           0.18175880\n",
       "                          Equity(488 [ZBH])                          -1.40061195\n",
       "                          Equity(489 [ZION])                          0.52389302\n",
       "                          Equity(490 [ZTS])                          -0.93730520\n",
       "\n",
       "[244259 rows x 1 columns]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor_start_date = universe_end_date - pd.DateOffset(years=2, days=2)\n",
    "sector = project_helper.Sector()\n",
    "window_length = 5\n",
    "\n",
    "pipeline = Pipeline(screen=universe)\n",
    "pipeline.add(\n",
    "    mean_reversion_5day_sector_neutral(window_length, universe, sector),\n",
    "    'Mean_Reversion_5Day_Sector_Neutral')\n",
    "engine.run_pipeline(pipeline, factor_start_date, universe_end_date)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Mean Reversion 5 Day Sector Neutral Smoothed Factor\n",
    "Taking the output of the previous factor, let's create a smoothed version. Implement `mean_reversion_5day_sector_neutral_smoothed` to generate a mean reversion 5 fay sector neutral smoothed factor. Call the `mean_reversion_5day_sector_neutral` function to get the unsmoothed factor, then use `SimpleMovingAverage` function to smooth it. You'll have to apply rank and zscore again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Integration Test on pipeline:\n",
      "> start_dat = pd.Timestamp('2015-01-05', tz='utc')\n",
      "> end_date = pd.Timestamp('2015-01-07', tz='utc')\n",
      "> universe = AverageDollarVolume(window_length=2).top(4)\n",
      "> factor = mean_reversion_5day_sector_neutral_smoothed(\n",
      "    window_length=3,\n",
      "    universe=universe,\n",
      "    sector=project_helper.Sector())\n",
      "> pipeline.add(factor, 'Mean_Reversion_5Day_Sector_Neutral_Smoothed')\n",
      "> engine.run_pipeline(pipeline, start_dat, end_date)\n",
      "\n",
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "from zipline.pipeline.factors import SimpleMovingAverage\n",
    "\n",
    "def mean_reversion_5day_sector_neutral_smoothed(window_length, universe, sector):\n",
    "    \"\"\"\n",
    "    Generate the mean reversion 5 day sector neutral smoothed factor\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    window_length : int\n",
    "        Returns window length\n",
    "    universe : Zipline Filter\n",
    "        Universe of stocks filter\n",
    "    sector : Zipline Classifier\n",
    "        Sector classifier\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    factor : Zipline Factor\n",
    "        Mean reversion 5 day sector neutral smoothed factor\n",
    "    \"\"\"\n",
    "    return SimpleMovingAverage(inputs=[mean_reversion_5day_sector_neutral(window_length, universe, sector)],\n",
    "                               window_length=window_length).rank().zscore()\n",
    "\n",
    "\n",
    "project_tests.test_mean_reversion_5day_sector_neutral_smoothed(mean_reversion_5day_sector_neutral_smoothed)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's see what some of the smoothed data looks like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Mean_Reversion_5Day_Sector_Neutral_Smoothed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"30\" valign=\"top\">2014-01-03 00:00:00+00:00</th>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>1.11580784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>1.72840822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>1.34188655</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>0.91160771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>0.96265774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(5 [ABC])</th>\n",
       "      <td>0.77304334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(6 [ABT])</th>\n",
       "      <td>0.48862173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(7 [ACN])</th>\n",
       "      <td>-0.45945029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(8 [ADBE])</th>\n",
       "      <td>0.81680051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(9 [ADI])</th>\n",
       "      <td>0.94807202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(10 [ADM])</th>\n",
       "      <td>0.73657903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(11 [ADP])</th>\n",
       "      <td>0.32088591</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(12 [ADS])</th>\n",
       "      <td>-1.59713671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(13 [ADSK])</th>\n",
       "      <td>0.08022148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(14 [AEE])</th>\n",
       "      <td>0.11668579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(15 [AEP])</th>\n",
       "      <td>0.21878585</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(16 [AES])</th>\n",
       "      <td>-0.75116475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(17 [AET])</th>\n",
       "      <td>-1.09392925</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(18 [AFL])</th>\n",
       "      <td>-0.07292862</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(19 [AGN])</th>\n",
       "      <td>-0.37922881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(20 [AIG])</th>\n",
       "      <td>1.05017208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(21 [AIV])</th>\n",
       "      <td>-0.14585723</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(22 [AIZ])</th>\n",
       "      <td>0.67094327</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(23 [AJG])</th>\n",
       "      <td>-0.56155035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(24 [AKAM])</th>\n",
       "      <td>1.67735818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(25 [ALB])</th>\n",
       "      <td>1.35647227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(26 [ALGN])</th>\n",
       "      <td>1.32730082</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(27 [ALK])</th>\n",
       "      <td>0.57613607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(28 [ALL])</th>\n",
       "      <td>0.02187859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(29 [ALLE])</th>\n",
       "      <td>1.65547960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"30\" valign=\"top\">2016-01-05 00:00:00+00:00</th>\n",
       "      <th>Equity(460 [VRSN])</th>\n",
       "      <td>1.12262790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(461 [VRTX])</th>\n",
       "      <td>-1.62157363</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(462 [VTR])</th>\n",
       "      <td>-1.60731804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(463 [VZ])</th>\n",
       "      <td>-1.68572380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(464 [WAT])</th>\n",
       "      <td>-1.00858316</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(465 [WBA])</th>\n",
       "      <td>0.98007198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(466 [WDC])</th>\n",
       "      <td>-1.22241705</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(467 [WEC])</th>\n",
       "      <td>-0.78762148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(468 [WFC])</th>\n",
       "      <td>0.72347131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(469 [WHR])</th>\n",
       "      <td>0.37420930</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(471 [WM])</th>\n",
       "      <td>-0.53814861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(472 [WMB])</th>\n",
       "      <td>-1.65721261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(473 [WMT])</th>\n",
       "      <td>-1.41486754</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(474 [WRK])</th>\n",
       "      <td>-1.46476212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(475 [WU])</th>\n",
       "      <td>1.55742347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(476 [WY])</th>\n",
       "      <td>-0.41697608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(477 [WYN])</th>\n",
       "      <td>0.48112624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(478 [WYNN])</th>\n",
       "      <td>-1.36497297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(479 [XEC])</th>\n",
       "      <td>-0.47399845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(480 [XEL])</th>\n",
       "      <td>-0.95156079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(481 [XL])</th>\n",
       "      <td>-0.76623809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(482 [XLNX])</th>\n",
       "      <td>1.47188991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(483 [XOM])</th>\n",
       "      <td>1.08698892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(484 [XRAY])</th>\n",
       "      <td>0.10335304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(485 [XRX])</th>\n",
       "      <td>0.98719977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(486 [XYL])</th>\n",
       "      <td>0.66644894</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(487 [YUM])</th>\n",
       "      <td>1.07273333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(488 [ZBH])</th>\n",
       "      <td>-0.13186423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(489 [ZION])</th>\n",
       "      <td>0.31718693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(490 [ZTS])</th>\n",
       "      <td>0.16750321</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>244259 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              Mean_Reversion_5Day_Sector_Neutral_Smoothed\n",
       "2014-01-03 00:00:00+00:00 Equity(0 [A])                                        1.11580784\n",
       "                          Equity(1 [AAL])                                      1.72840822\n",
       "                          Equity(2 [AAP])                                      1.34188655\n",
       "                          Equity(3 [AAPL])                                     0.91160771\n",
       "                          Equity(4 [ABBV])                                     0.96265774\n",
       "                          Equity(5 [ABC])                                      0.77304334\n",
       "                          Equity(6 [ABT])                                      0.48862173\n",
       "                          Equity(7 [ACN])                                     -0.45945029\n",
       "                          Equity(8 [ADBE])                                     0.81680051\n",
       "                          Equity(9 [ADI])                                      0.94807202\n",
       "                          Equity(10 [ADM])                                     0.73657903\n",
       "                          Equity(11 [ADP])                                     0.32088591\n",
       "                          Equity(12 [ADS])                                    -1.59713671\n",
       "                          Equity(13 [ADSK])                                    0.08022148\n",
       "                          Equity(14 [AEE])                                     0.11668579\n",
       "                          Equity(15 [AEP])                                     0.21878585\n",
       "                          Equity(16 [AES])                                    -0.75116475\n",
       "                          Equity(17 [AET])                                    -1.09392925\n",
       "                          Equity(18 [AFL])                                    -0.07292862\n",
       "                          Equity(19 [AGN])                                    -0.37922881\n",
       "                          Equity(20 [AIG])                                     1.05017208\n",
       "                          Equity(21 [AIV])                                    -0.14585723\n",
       "                          Equity(22 [AIZ])                                     0.67094327\n",
       "                          Equity(23 [AJG])                                    -0.56155035\n",
       "                          Equity(24 [AKAM])                                    1.67735818\n",
       "                          Equity(25 [ALB])                                     1.35647227\n",
       "                          Equity(26 [ALGN])                                    1.32730082\n",
       "                          Equity(27 [ALK])                                     0.57613607\n",
       "                          Equity(28 [ALL])                                     0.02187859\n",
       "                          Equity(29 [ALLE])                                    1.65547960\n",
       "...                                                                                   ...\n",
       "2016-01-05 00:00:00+00:00 Equity(460 [VRSN])                                   1.12262790\n",
       "                          Equity(461 [VRTX])                                  -1.62157363\n",
       "                          Equity(462 [VTR])                                   -1.60731804\n",
       "                          Equity(463 [VZ])                                    -1.68572380\n",
       "                          Equity(464 [WAT])                                   -1.00858316\n",
       "                          Equity(465 [WBA])                                    0.98007198\n",
       "                          Equity(466 [WDC])                                   -1.22241705\n",
       "                          Equity(467 [WEC])                                   -0.78762148\n",
       "                          Equity(468 [WFC])                                    0.72347131\n",
       "                          Equity(469 [WHR])                                    0.37420930\n",
       "                          Equity(471 [WM])                                    -0.53814861\n",
       "                          Equity(472 [WMB])                                   -1.65721261\n",
       "                          Equity(473 [WMT])                                   -1.41486754\n",
       "                          Equity(474 [WRK])                                   -1.46476212\n",
       "                          Equity(475 [WU])                                     1.55742347\n",
       "                          Equity(476 [WY])                                    -0.41697608\n",
       "                          Equity(477 [WYN])                                    0.48112624\n",
       "                          Equity(478 [WYNN])                                  -1.36497297\n",
       "                          Equity(479 [XEC])                                   -0.47399845\n",
       "                          Equity(480 [XEL])                                   -0.95156079\n",
       "                          Equity(481 [XL])                                    -0.76623809\n",
       "                          Equity(482 [XLNX])                                   1.47188991\n",
       "                          Equity(483 [XOM])                                    1.08698892\n",
       "                          Equity(484 [XRAY])                                   0.10335304\n",
       "                          Equity(485 [XRX])                                    0.98719977\n",
       "                          Equity(486 [XYL])                                    0.66644894\n",
       "                          Equity(487 [YUM])                                    1.07273333\n",
       "                          Equity(488 [ZBH])                                   -0.13186423\n",
       "                          Equity(489 [ZION])                                   0.31718693\n",
       "                          Equity(490 [ZTS])                                    0.16750321\n",
       "\n",
       "[244259 rows x 1 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline = Pipeline(screen=universe)\n",
    "pipeline.add(\n",
    "    mean_reversion_5day_sector_neutral_smoothed(5, universe, sector),\n",
    "    'Mean_Reversion_5Day_Sector_Neutral_Smoothed')\n",
    "engine.run_pipeline(pipeline, factor_start_date, universe_end_date)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overnight Sentiment Factor\n",
    "For this factor, were using the hypothesis from the paper [_Overnight Returns and Firm-Specific Investor Sentiment_](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2554010)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from zipline.pipeline.data import USEquityPricing\n",
    "\n",
    "\n",
    "class CTO(Returns):\n",
    "    \"\"\"\n",
    "    Computes the overnight return, per hypothesis from\n",
    "    https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2554010\n",
    "    \"\"\"\n",
    "    inputs = [USEquityPricing.open, USEquityPricing.close]\n",
    "    \n",
    "    def compute(self, today, assets, out, opens, closes):\n",
    "        \"\"\"\n",
    "        The opens and closes matrix is 2 rows x N assets, with the most recent at the bottom.\n",
    "        As such, opens[-1] is the most recent open, and closes[0] is the earlier close\n",
    "        \"\"\"\n",
    "        out[:] = (opens[-1] - closes[0]) / closes[0]\n",
    "\n",
    "        \n",
    "class TrailingOvernightReturns(Returns):\n",
    "    \"\"\"\n",
    "    Sum of trailing 1m O/N returns\n",
    "    \"\"\"\n",
    "    window_safe = True\n",
    "    \n",
    "    def compute(self, today, asset_ids, out, cto):\n",
    "        out[:] = np.nansum(cto, axis=0)\n",
    "\n",
    "        \n",
    "def overnight_sentiment(cto_window_length, trail_overnight_returns_window_length, universe):\n",
    "    cto_out = CTO(mask=universe, window_length=cto_window_length)\n",
    "    return TrailingOvernightReturns(inputs=[cto_out], window_length=trail_overnight_returns_window_length) \\\n",
    "        .rank() \\\n",
    "        .zscore()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overnight Sentiment Smoothed Factor\n",
    "Just like the factor you implemented, we'll also smooth this factor."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "def overnight_sentiment_smoothed(cto_window_length, trail_overnight_returns_window_length, universe):\n",
    "    unsmoothed_factor = overnight_sentiment(cto_window_length, trail_overnight_returns_window_length, universe)\n",
    "    return SimpleMovingAverage(inputs=[unsmoothed_factor], window_length=trail_overnight_returns_window_length) \\\n",
    "        .rank() \\\n",
    "        .zscore()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Combine the Factors to a single Pipeline\n",
    "With all the factor implementations done, let's add them to a pipeline."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Mean_Reversion_5Day_Sector_Neutral</th>\n",
       "      <th>Mean_Reversion_5Day_Sector_Neutral_Smoothed</th>\n",
       "      <th>Momentum_1YR</th>\n",
       "      <th>Overnight_Sentiment</th>\n",
       "      <th>Overnight_Sentiment_Smoothed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2014-01-03 00:00:00+00:00</th>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>0.85326482</td>\n",
       "      <td>1.11580784</td>\n",
       "      <td>1.49939067</td>\n",
       "      <td>0.70659131</td>\n",
       "      <td>1.11242837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>1.62630815</td>\n",
       "      <td>1.72840822</td>\n",
       "      <td>1.60279693</td>\n",
       "      <td>-1.70668978</td>\n",
       "      <td>-1.72843105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>0.64906469</td>\n",
       "      <td>1.34188655</td>\n",
       "      <td>0.37669421</td>\n",
       "      <td>0.03261191</td>\n",
       "      <td>-0.62687332</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>1.40752230</td>\n",
       "      <td>0.91160771</td>\n",
       "      <td>-1.48461835</td>\n",
       "      <td>-1.67770142</td>\n",
       "      <td>0.53990823</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>1.45857233</td>\n",
       "      <td>0.96265774</td>\n",
       "      <td>0.91588396</td>\n",
       "      <td>-1.47478289</td>\n",
       "      <td>-0.06160027</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                            Mean_Reversion_5Day_Sector_Neutral  \\\n",
       "2014-01-03 00:00:00+00:00 Equity(0 [A])                             0.85326482   \n",
       "                          Equity(1 [AAL])                           1.62630815   \n",
       "                          Equity(2 [AAP])                           0.64906469   \n",
       "                          Equity(3 [AAPL])                          1.40752230   \n",
       "                          Equity(4 [ABBV])                          1.45857233   \n",
       "\n",
       "                                            Mean_Reversion_5Day_Sector_Neutral_Smoothed  \\\n",
       "2014-01-03 00:00:00+00:00 Equity(0 [A])                                      1.11580784   \n",
       "                          Equity(1 [AAL])                                    1.72840822   \n",
       "                          Equity(2 [AAP])                                    1.34188655   \n",
       "                          Equity(3 [AAPL])                                   0.91160771   \n",
       "                          Equity(4 [ABBV])                                   0.96265774   \n",
       "\n",
       "                                            Momentum_1YR  Overnight_Sentiment  \\\n",
       "2014-01-03 00:00:00+00:00 Equity(0 [A])       1.49939067           0.70659131   \n",
       "                          Equity(1 [AAL])     1.60279693          -1.70668978   \n",
       "                          Equity(2 [AAP])     0.37669421           0.03261191   \n",
       "                          Equity(3 [AAPL])   -1.48461835          -1.67770142   \n",
       "                          Equity(4 [ABBV])    0.91588396          -1.47478289   \n",
       "\n",
       "                                            Overnight_Sentiment_Smoothed  \n",
       "2014-01-03 00:00:00+00:00 Equity(0 [A])                       1.11242837  \n",
       "                          Equity(1 [AAL])                    -1.72843105  \n",
       "                          Equity(2 [AAP])                    -0.62687332  \n",
       "                          Equity(3 [AAPL])                    0.53990823  \n",
       "                          Equity(4 [ABBV])                   -0.06160027  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "universe = AverageDollarVolume(window_length=120).top(500)\n",
    "sector = project_helper.Sector()\n",
    "\n",
    "pipeline = Pipeline(screen=universe)\n",
    "pipeline.add(\n",
    "    momentum_1yr(252, universe, sector),\n",
    "    'Momentum_1YR')\n",
    "pipeline.add(\n",
    "    mean_reversion_5day_sector_neutral(5, universe, sector),\n",
    "    'Mean_Reversion_5Day_Sector_Neutral')\n",
    "pipeline.add(\n",
    "    mean_reversion_5day_sector_neutral_smoothed(5, universe, sector),\n",
    "    'Mean_Reversion_5Day_Sector_Neutral_Smoothed')\n",
    "pipeline.add(\n",
    "    overnight_sentiment(2, 5, universe),\n",
    "    'Overnight_Sentiment')\n",
    "pipeline.add(\n",
    "    overnight_sentiment_smoothed(2, 5, universe),\n",
    "    'Overnight_Sentiment_Smoothed')\n",
    "all_factors = engine.run_pipeline(pipeline, factor_start_date, universe_end_date)\n",
    "\n",
    "all_factors.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Evaluate Alpha Factors\n",
    "*Note:* _We're evaluating the alpha factors using delay of 1_\n",
    "## Get Pricing Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "import alphalens as al\n",
    "\n",
    "assets = all_factors.index.levels[1].values.tolist()\n",
    "pricing = get_pricing(\n",
    "    data_portal,\n",
    "    trading_calendar,\n",
    "    assets,\n",
    "    factor_start_date,\n",
    "    universe_end_date)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Format alpha factors and pricing for Alphalens\n",
    "In order to use a lot of the alphalens functions, we need to aligned the indices and convert the time to unix timestamp. In this next cell, we'll do just that."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dropped 1.2% entries from factor data: 1.2% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n",
      "Dropped 1.2% entries from factor data: 1.2% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n",
      "Dropped 2.3% entries from factor data: 2.3% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n",
      "Dropped 0.4% entries from factor data: 0.4% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n",
      "Dropped 0.4% entries from factor data: 0.4% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).\n",
      "max_loss is 35.0%, not exceeded: OK!\n"
     ]
    }
   ],
   "source": [
    "clean_factor_data = {\n",
    "    factor: al.utils.get_clean_factor_and_forward_returns(factor=factor_data, prices=pricing, periods=[1])\n",
    "    for factor, factor_data in all_factors.iteritems()}\n",
    "\n",
    "unixt_factor_data = {\n",
    "    factor: factor_data.set_index(pd.MultiIndex.from_tuples(\n",
    "        [(x.timestamp(), y) for x, y in factor_data.index.values],\n",
    "        names=['date', 'asset']))\n",
    "    for factor, factor_data in clean_factor_data.items()}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Quantile Analysis\n",
    "### Factor Returns\n",
    "Let's view the factor returns over time. We should be seeing it generally move up and to the right."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f54e2ce6ef0>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEYCAYAAABY7FHWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsnXd4FNX6xz+zJT0hjRYCAkIoAaRJ70noAQQc5eoVbNyroj9ULtLEgohIE0XlAqJXrxdYlKqIhI40EZTeIi0hJJSE9N3s7szvj8lussmmspBE5vM8PGRnzpzzzmRz3jnvOef7CrIso6KioqKiYkNT0QaoqKioqFQuVMegoqKiouKA6hhUVFRUVBxQHYOKioqKigOqY1BRUVFRcUB1DCoqKioqDqiOQUVFRUXFAdUxqKioqKg4oDoGFRUVFRUHdBVtgBPUrdgqKioq5UNwRSWV0TGQkJBQ0SYUSXBwMDdv3qxoM0pEtdP1VAVbq4KNoNp5NwgJCXFZXWooSUVFRUXFAdUxqKioqKg4oDoGFRUVFRUHhEoouy0XnGOQZRmj0YgkSQiCS+ZWyo27uzsmk6lCbSgNqp2upyrYWhVshMpppyzLaDQaPDw87P1MFZxj+OtOPhfEaDSi1+vR6SreXJ1Oh1arrWgzSkS10/VUBVurgo1Qee20WCwYjUY8PT0r2pQKpUqEkiRJqhROQUVF5a+NTqdDkqSKNqPCqRKOoaLDRyoqKvcPlbG/kSWZexn2rxKOQUVFReV+Zu/2DE4fM96z9kqMz4iiuBwYDFw3GAwtnJxvCnwJtAWmGgyGufnO9QcWAlpgmcFg+MBVhquoqKjcD8iyTGqKlXsZ4SrNiOEroH8x55OBV4C5+Q+KoqgFPgUGAM2BUaIoNi+fmRVPnTp1ePnll+2fLRYLLVu25Kmnnron7Y8cOZLu3bsTGRnJwIEDOXHixD1ptyBbtmxh0aJFLq2zbt26REVFERUVxZgxY+zH899zjx49mDp1KqmpqS5te+HChfTu3ZvIyEiioqI4cuRImeuIi4tj7dq1LrEnLi6OOnXqsHz5cvuxqVOnsmrVqnLXV17bGjduXK7rVFxHVqaV9FQJSYL0NCuydG/CSSWOGAwGw25RFOsXc/46cF0UxUEFTnUAYg0GwwUAURRXAkOBU+U3F6SVS5HjLt5JFYUQ6jZA8/jzxZbx8vLi7NmzZGdno9fr2b17N7Vq1XKpHSWxaNEiHnroIVatWsV7773HypUr71pbVqvV6aqRvn370rdvX5e25eHhQUxMjNNztnvOyclh1qxZPPPMM3z//fcuafe3335j69atbN68GXd3d5KTk8nJySlzPbbO95FHHin1NRaLpcgFFcHBwXzxxRc8+eSTuLm5ldme0tpWnA0qlYNtP6Tbf5askJkh4eN391dz3c1vRR0gLt/neKCjs4KiKI4FxgIYDAaCg4MdziclJdm/wBaNBsnFk0MajaZUfyARERFs3bqV6OhoNmzYwPDhwzlw4AA6nY7MzEymTJnCmTNnsFgsTJgwgQEDBnDlyhXGjRtHVlYWALNmzeLhhx9m7969zJ07l8DAQM6cOUOrVq347LPPipz4EgQBrVaLTqejQ4cOLF682G7zzp07+fDDD8nJyaF+/fosXLiQXbt2sXLlSpYuXQrA3r17+fzzz/nvf//rtLy3tzft27dn1KhR7Ny5k2eeeYabN2/y9ddfo9VqCQsLY8mSJaxcuZKjR48ya9Ys4uLiGD9+PLdu3SIoKIiFCxcSGhrKK6+8go+PD0ePHuX69etMnz6d6OjoYp+ts+ef/551Oh1vv/02HTt25OzZs4SHhzN69GgSEhIwmUw899xzPPXUU3z77becOXOGGTNmAPDNN99w/vx53n333UL12+z29vYGoEaNGvZzR48e5a233iIzM5PAwEA+/vhjatasSVxcHP/617+4desWWq2WZcuWMWvWLM6fP0/fvn0RRZExY8bwxhtv8Mcff6DT6XjnnXfo1q0bK1euZOvWrRiNRrKyslizZk0hm7RaLUFBQXTo0IHvv/+ev//972g0GvtzuHTpEpMmTeLWrVt4enoyb948GjduzCuvvEJUVBTR0dHodDoaNGjAxYsXC9nm7+/vYMM333zDU089RWpqKmazmUmTJjFgwIBify+uorI6JXd3d3sfpNPpCvVH95bbDp9kyZvgYJ+73urd/M046+GcjoMMBsMSYImtTMENJSaTKe/tVXz2rsyYWyyWEstER0fbQw8nT55EFEX279+PxWJh/vz5dOnShXnz5pGamsqgQYPo2rUrAQEB/O9//8PDw4MLFy7w0ksv8dNPP2G1Wjl+/Djbt2+nVq1aDB06lP3799OhQwenbcuyjNVqxWKx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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e2ce6208>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ls_factor_returns = pd.DataFrame()\n",
    "\n",
    "for factor, factor_data in clean_factor_data.items():\n",
    "    ls_factor_returns[factor] = al.performance.factor_returns(factor_data).iloc[:, 0]\n",
    "\n",
    "(1+ls_factor_returns).cumprod().plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Basis Points Per Day per Quantile\n",
    "It is not enough to look just at the factor weighted return. A good alpha is also monotonic in quantiles. Let's looks the basis points for the factor returns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2d43320>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2cdfd68>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2c00f60>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2bb6c88>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2d2ccf8>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2d2cbe0>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2be0400>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x7f54e2b9dfd0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAJwCAYAAABfzCS5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XmYbEV5+PHvCwOiglxlELyCouIGGNxQowYwbmgEcSs1ImIiqD8Et+CGC5G4xagB0QTcEAXkKBBcMAghxC1qUHFhURFQAUGucEXW65X6/VE10PTtnumZ7rndZ+738zz9zPTp03Wq3z59qt9Tdaoj54wkSZIktdF6466AJEmSJC2UCY0kSZKk1jKhkSRJktRaJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGk2ciDg6Is4Ydz2khYiIQyLiwnHXQ2oz2wG12brQDkTENhGRI+Lxi1T+JRHx1kHXN6Hpox5Mc0Sc2OOxPetjq8dRt34iYtdar5nbNRHx7Yh4+rjrNk+vBp63NjfYI3Yzt5f1WeeWiPhjRJwXEUdGxA5rs761PptFxOERcXFE3BwRV0XENyLihSPezuqI2GeUZc6yrX1qfL8bEdH12IURccgibHNRylX72Q6Mle3AYHW2HRjNNsfaDkTE4yPia/X9uykifhURX4iIe4+rTp0i4oyIOHrc9ZiNCc3sfg3sHhFbdC3fD/jVGOozqIcD9wAeC/wQ+I+I2H68VSoiYoO51sk5/yHnfM3aqE8PM7GbuR3bZ53lwI7AG4CtgB9ERFpblaxOBHYGXg48ANgNOB7YbC3XYyCDvPdVpsT2+YtYnXmbR/21tNgOjJjtwEjZDqxFi9EORMSDgdOBXwBPAh4M7ANcAtxl1NtbsnLO3nrcgKOBM4CvA2/sWH4v4E/AO4DVHcsfAXwNuA64CjgJuHfH4/epyy4HbgB+Ary4a5tnAR8H3gZcAVwNHANsPGCdd6UcBLbqWLZJXXZA17pPBr4F3AhcBnwK2KzjsT93llOXv6DW/S71/hY1TlcBf6zl7dyjPn8DfBO4CXgl5QP6qfoabwZ+A3ywO/Yd9wP4B+AiYBXwS+A1XXW7BHgncFiN25XAh4CphcZuPusAJwArgU3r/bsCn6V8GboR+BnweiDq40+oMd66q5yXAH8A7jxHfZfVujxjgNd2AHBBjf8vgIM74wJMAW+vcb257g8f7ohr7rx1PO/pwPfrc34HfLSz3tz2GTqglnMLcMc56roPsBp4f32/N+x47ELgkK56HwJcXF/bucDLu8rLwF5dy84Aju74zOWu2zb033dnfV9rmYcAFy7m8cnb2rlhO2A7MI91sB2wHbit/EMYsB0AXgNcNcc629S6/C1wGuUzeAGwC3BP4FTgeuA84K+6nvsYyjHsRuAa4Djg7j32ufPq+3gp8E8z+0d9D7vjs2tHnRLwpVqni4B9usremPKZvKyu80Pg2V3r7Ah8u8b457XMS4C3DhLDnLMJzSw7z8yHcC/Kh3/mAPRO4D9nPnB12XaUBuwfgQcBDwE+X9+Ujeo6DwFeVd+0+1E+3KuBJ3Rs8yzKwfBDtZynUA7Khw5Y55kP31b1/oaUBiDT8QEH/rruVAcA9wd2Av677vBB6bm7lI4GvD7vVODY+v8d685/IvBIYFvKAfJm4MFd9bkA2J3SmG8FHA78CHg05YvBY4F9u2PfcX9/ygdxv1rfV9Sd/u871rmE8kF9U10nUb5w/P08Y3cJ5aD8bcoHPPrFt+v5j6iPPbfe37LW5eH1de9V95GXdjznAuAdXeV8A/i3Aeo7BVwLfIxZGj3KQfVXwLNqPZ5OOQgf2rHOp+trfjFl33wM8Nr62OaU/fTV9TVtWZf/RV3+IcrZpKfVcj/T9T5eC5wMPJTyGVh/jte1Ty13GbACeH3HY90N2dHAjymfk/tQzuSt7Nov5mrI7kZpCP9l5vUB69N/3x3kfT0EE5olccN2wHbAdgBsBxa1Hah1Xg08bZZ1tql1+SWwJ6U37mTKyZEz6nv7AOALlJMDG3Tsg9dSkpiHAI+v8fpGR9l/Q0ms31zLeD7lc3RofXxTynHhhI74bNhRp4son7VtgXfX1/KA+tygHFfOqtu+L+UzvAp4Ysdx5DLKsWVH4C+B/6Mcn0xohr1xW0O2EfB7ypmU9SkH+Gdz+4bsaOBzXc+/Q30z9pxlG6cAH+u4fxbw4651/g343wHrPPPhu75+uG6p938BLOvaznu7nnuvuu5D6/33Aud2PL4FpWF4ar2/T43FVFc5ZwL/2lWf7jOQp1APJLPFvuP+b4B/7lrnQ8BFHfcvAb7Ytc5XgeMHjN0Dgf8HPIrSML+N0ih3HvBnXk+vhmyj+tgbZtnGYcDpHfdfR2lk1uuoQwYeNmCdn0U52K8Czq7l/3XH43eq++BuXc/bG1hZ/9+Wjga4z3ZWs+YZl88A3+ta9sy6z927431cyYBnljv2q5nP1aspX+TuVu/f2pBRGpFbgAd1Pf/twDkd92dtyLrL7fFev3iAOne/r4dgQrMkbtgO2A7YDsysbzswe50X3A5QTh58vL6W31NOlryRjp47bkseXtOxbKe6rDPhe1hdtkO9fyjlM9rZy7VjXWfnev8bQNNVp1dTTiBs2CteXXV6Xcey9Sk9tS/viOFN1F7LjvU+CfxH/f9llGPVXTse36GWPXBC4zU0c8g530T50O5LyWKnKF1rnXYCnhUR183cKDvlRpSzRETEnSLivRFxbkRcXdd5OnDvrrLO6bp/OaURmY+nUnbqZ1Gy+ZfknFd21fc1XfU9rz52//r308B2EfHwev9FlLM3Z3SUsSWwsqucv+ooY8b3uu5/FHhuRPw0Ig6LiKdFRM99MSLuQjkj8vWuh/4H2CYi7tSxbMGxyzn/LOf80Zzz93LOZ+ecD6U05q8dcMzszIWLudZ7vYh4U0ScExEramxewe3f76OBu1PeLyj72Pdzzj8csM4nU7qad6OcId0O+K+I+EhdZXvKmY8Tu96jI4FNI2JzyhkmKMNk5mN7er8nUesx4/yc83XzLHvGRymfo16znDyybuvsrtf2Ftbc/4Zxu313wPdVS4ztgO2A7UBPtgMjaAdyzrfknF9GuSbrVZTP4cuB8yNi167Vf9Tx/xX17497LLt7/bs98J2c86qO7f2IMqRx+451er2PG1F66+Zy62cu5/xnyjFi5jO3E6U357Ku92gvbnuPtqPsI9d0lPPTWseBTc1n5XXYkZQxf/cCPpVz/lPXxBvrURq79/Z47u/r3/dTzly8jjLe8nrgA5SuvE6ruu5n5j95wyU550uBX0TEDcBJEbF9znmmLusB76t17nYFQM75/Ig4m3IW5wf177F1Z50p43xKY9nthq7719/uBeV8WkTci3IA35UyFvUnEfHEjvK75a770WOdUcSu07cpZ3o2pzSKs5k5MFxU/76e0n37Okr8/gi8lvJlqFQu56sj4gvAvlGmJ92b3gftvnLON1POhp4JvCfKFIeHRsT7ue21P48y7KXb1fPZVq/ND7D8+j7rzF14+Zy9GTg2Io7oenjmtT2WNfe33PV/974yn4s6u+s/5/uqJct2wHbAdqDH5gdYbjswgJzzFZQJHY6PiDdRjjfvoPSmzvhT51NmWbZej2VrbHKWdaLP8l5m+8ytR0lMdprleTHgdmZlQjOAelD/P+BxlPG03c6mjCX9Za59ZT3sTGkIGigZPmWs4pWLUOVb5ZxPj4hfUD4UB3bUd/uc81xzpB8DvDUiPk3potyr47GZRu7anPPvFlCvq7ntg/sp4H8pWfpPuta7NiIupVz49pWOh3YGLs45dx/ERunhlC7XFQOsexClW33mzOXOwH/mnD8xs0JE9DpjdCRlfOkrKGfRjh+mwpQvF1Aa33MpXb33zTmf2mvliPhB/fcplLG3vayidCN3OpfynnTahXJQOo8RyTl/ISJex5pfEr9f/94r5/zlWYr4HeWsFwARcQfKfnZxxzq9Xl8/g76vWmJsB2wHBljXdsB2YCRyzqsi4iLKNSfDOBd4aURsONNLExE7Uk6inNuxzi7ARzqetzNlv59JzucTn05nU66F2qj2uvSr474RsWymFznKjIzdJ3pmZUIzuKdS3pBeZzPeTemS/GxEHEaZ7WUbyoVbh+WcL6KcjXtmlN8zuI6S2S9nkRuy6l+AJiI+mHO+hHK26WsR8UFKY/VHStff84BX5ZxvrM87nnL28JPAD7p2xmMpZyS+EhEHU878bEG50PT8nPN/9KtMRLyLciA6lzJm9EWUmPy6z1PeA3ygNshn1W28knKR6EhExGvr9s+lHIyfShk//ZHOrtpq8yi/PXEnyoWQ/48yI9CLcs4zXaQ/A14cEU+gXOy2N+Xi19tNQ5pz/mZE/IzyHh2Tc/7jgPXdjDK84FOULuiVlDGn76EcpM+pZ7beDbw7IjKlkZ2iXBj4sJzzG3POF0bEscBHI2IjyheKuwGPzTkfVjd3MfCEiPgqsCrnvIJypvkHdR86irK/f5jyZa3f+7hQr6fMnHTzzIJa708CH4uIN9R635lyUe7mOef31VXPAF4REV+n7OcHU7q/O10MPK6eLb6B2c9YDvS+asmyHbAdmGE7YDswknYgIl5OSZxPogwP3QDYgzLJQq8e3/k4gnI9zNF1P1hGGcb3zZzzN+o67wG+VHuFTqJM3nAI8IGO/X7m/b8fpcdl0OFgZ1Lif1J9j35MmSXuscBNOeePUSYsOJRy7DyYktQfRkmoBpcHvNhmXbvRdUFij8f34fbTdT6EcpHjNfVNuJDyAZ+5kG1rylR71wO/pcyE8wngrI4yzgI+3rWdt1KGDgxS513pcbEipTvvAm5/Adxf1Z3sj7VO5wP/ypoXd55cy3x1j+1tRrlY9TJK9n5ZXf9hc9TnbcBPKY3XHyhjNR/fL/a1/gdRPlB/opwx6DVd51u7ln28M75zxO4gykHqhlqn71PGMq/XI74zt5m4HUm9AK9j3U2BhjK7yO8pZz4O7fVeUg42GdhpHvvnHbjtC9TV3HYm5d9ZcwrQv6eMcb2p7p/fBV7Z8fgGM3Wr7+Ol1At66+O71de5Csgdyzun67yq7gtrTNc5z8/dPnR8rjqWf77G6JCOZetTfv/hglq3FXVfel7HOltSrnW4lnJR8StZ82LQR1KGDdzImtN1du+7c76vOCnAkrnNtQ9376/YDtgO3L482wHbgUFe78NqnC6s+941Naav4rbJIrapden8jGxVl+3a9Voz8KSOZZ3TNq+k/7TNM+/vZcC7uP203vetZVw3s81edarrds9Ed0dKYnZxLf8KysQHf90Vg/+t+9EvKdPDX8I8JgWYmYJS0phExD8DT845P2zcdZEkrX22A9JwHHImjUlEbEoZk74ft41rlyStI2wHpNFw2uYW6ZzyrsftLeOu36SKiHvNEbsXjalqp1CGn5xMmeHnVhHxltnqPJbaDmmC3wepNWwHFmaCjz+2A5PxPiyaKNO093u9/z7u+i0VDjlrkYjYdpaHr869L1Rd50XEFGWsZz9X5gEvwlxbIuJulIsye8pzz0w0cdr4PkiTxnZgYdp4/LEdWBoi4t70nyZ6QTMEak1DJzQppa0pM6RsSZmp5KimaQ6b/VmSJEmSNLxRDDlbDby+aZoHU2ZS2D+ltN0cz5EkSZKkoY18yFlK6RTgiKZpTp9lNce5SdJk6PVr67KdkqRJMWc7NdJZzlJK21Dmkv7uXOtefvnlo9z0gk1PT7NixSA/ALzuMTb9GZvZGZ/+Jik2y5cvn3ulddiktFMwWfvNpDE2/Rmb/oxNf5MUm0HbqZH10KSUNqb8mNG7mqY5qcfj+1F+tGpZ0zTTq1Z1/+jueExNTbF69epxV2MiGZv+jM3sjE9/kxSbDTfcEOyhudWktlMwWfvNpDE2/Rmb/oxNf5MUm0HbqZEkNCmlDYAvA6c1TfPBAZ6SJ+XM1yRloZPG2PRnbGZnfPqbpNjUM18mNL1NTDsFk7XfTBpj05+x6c/Y9DdJsRm0nRp6UoCUUgCfAM4fMJmRJEmSpJEYxTU0jwNeDPwkpXROXfaWpmlOHUHZkiRJktTX0AlN0zTfxCELkiRJksZgFL9DI0mSJEljYUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmtNjbsC0tr25333GLqMK0dQD4D1P/bFEZUkSZK0brKHRpIkSVJrmdBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWqtqVEUklL6JPAM4HdN0+wwijIlSZIkaS6j6qE5GthtRGVJkiRJ0kBGktA0TfN14OpRlCVJkiRJg/IaGkmSJEmtNZJraAaRUtoPOAhY1jQN09PTa2vTs5qampqYukyapRqbK8ddgQ5LMb6wdPedUTA2k2tS2ylwv5mNsenP2PRnbPprY2zWWkLTNM1RwFH1bl6xYsXa2vSspqenmZS6TBpjs/iWanzdd/qbpNgsX7583FWYKJPaTsFk7TeTxtj0txRj88xjLxh3FW51yoseNO4qLIpJ2m8GbaccciZJkiSptUaS0KSUjgf+F3hgSunSlNLfj6JcSZIkSZrNSIacNU3zwlGUI2m8/rzvHiMpZxTXKa3/sS+OoBRJkrTUOeRMkiRJUmuttUkBJEmSJC2OdXnCBBMaSRqAw/EkSZpMDjmTJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLWWCY0kSZKk1jKhkSRJktRaJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1psZdAUmSJN3mmcdeMO4q3OqUFz1o3FWQ5jSShCaltBtwGLA+8PGmad47inIlSZIkaTZDDzlLKa0PfAR4GrAd8MKU0nbDlitJkiRJcxlFD82jgAubprkIIKX0OeCZwHkjKFuSJC1BDquSNCqjmBTgnsBvOu5fWpdJkiRJ0qIaRQ9N9FiWuxeklPYDDgKWNU3D9PT00Bu+8lmPHb6MoUsotjj52yMqaTSMzSxGUJ+pqSlWr149gspMmBG9V0syPsZmyVuMdupxh31z6DJG5Vuvfvy4q3A7o6rPUvxMGZv+jE1/63JsRpHQXAps3XF/K+Dy7pWapjkKOKrezStWrBjBpifHUns9o7QUYzM9Pb0kX9eoGJ/+Jik2y5cvH3cVJortVDtN0mdq0hib/oxNf5MUm0HbqVEkNP8H3D+ldB/gMuAFwN+OoFxJkiRJmtXQ19A0TbMaeBVwGnB+WdScO2y5kiRJkjSXkfwOTdM0pwKnjqIsSZIkSRrUKGY5kyRJkqSxMKGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLWWCY0kSZKk1jKhkSRJktRaJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWMqGRJEmS1FomNJIkSZJaa2qYJ6eUngccAjwYeFTTNGePolKSJEmSNIihEhrgp8CzgSNHUBeN0Pof++LQZUxPT7NixYoR1EaSJElaHEMlNE3TnA+QUhpNbSRJkiRpHobtoRlYSmk/4CBgWdM0TE9PD13mlUOXMDqjeD2TZmpqakm+rlEwNrMzPv0Zm8m1GO3UJFlqr2eGn6n+jE1/xqa/NsZmzoQmpXQGsGWPhw5umuaUQTfUNM1RwFH1bl5qQ5mW2usBh5zNxtjMzvj0N0mxWb58+birMFFsp9ppkj5Tk8bY9Gds+puk2AzaTs2Z0DRN86ShayNJkiRJi8BpmyVJkiS11lAJTUrpWSmlS4G/BL6SUjptNNWSJEmSpLkNO8vZycDJI6qLJEmSJM2LQ84kSZIktZYJjSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLWWCY0kSZKk1jKhkSRJktRaJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWmhrmySml9wO7A6uAXwIvbZpm5SgqJkmSJElzGbaH5nRgh6Zp/gL4OfDm4askSZIkSYMZqoemaZqvddz9DvDc4aojSZIkSYMbKqHp8nfACf0eTCntBxwELGuahunp6aE3eOXQJYzOKF7PpJmamlqSr2sUjM3sjE9/xmZyLUY79a1XP37oMqDsN6tXrx5JWUuNn6n+jE1/xqa/NsYmcs6zrpBSOgPYssdDBzdNc0pd52DgkcCzm6aZvcAiX3755fOt6xr+vO8eQ5cxKut/7IvjrsLITU9Ps2LFinFXYyIZm9kZn/4mKTbLly8HiHHXY0KNpJ0alUnabyaNsenP2PRnbPqbpNgM2k7N2UPTNM2TZns8pfQS4BnAEwdMZiRJkiRpJIad5Ww34I3ALk3T3DCaKkmSJEnSYIad5ewIYBPg9JTSOSmlfx9BnSRJkiRpIMPOcrbtqCoiSZIkSfM1ylnO1rpRXIg/SRc+SZIkSZqfYYecSZIkSdLYmNBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWMqGRJEmS1FomNJIkSZJaK3LO49juWDYqSVpDjLsCE8p2SpImw5zt1Lh6aGJSbimlFeOuw6TejI2xMT7rRGzU27jfl0nfbybmZmyMjbFZ8rGZk0POYOW4KzDBjE1/xmZ2xqc/Y6OFcL/pz9j0Z2z6Mzb9tS42JjTwh3FXYIIZm/6MzeyMT3/GRgvhftOfsenP2PRnbPprXWxMaOCocVdgghmb/ozN7IxPf8ZGC+F+05+x6c/Y9Gds+mtdbMY1KYAkSZIkDc0eGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJ0iKIiBwRe83zOZdExFsXq07jtJB4SIMwodGiiIij64HrxB6P7VkfWz2Oui1ERJwREUePux4zIuJZEfHViLiiu4GI4j8j4lsRsX7X8x4eEasi4nn1fu643RAR50XE69b265Gk+YiILSLiw/XL/6qIuCoiToyIh467bl3uAXxh1IUupE2KiM0i4vCIuDgibq4x+0ZEvHAt1m9R4rEQEbFVbft2HXddNDwTGi2mXwO7R8QWXcv3A341hvosJRsD3wNe2f1AzjkDLwUeALx5ZnlEbAR8Fjg25/z5jqe8itLIbA8cBrwvIvZbvKpL0sJFxNbA2cBjKcfAbYG/AVYB34mI3RZ5+xsOum7O+Yqc802LWZ95OBHYGXg5pX3YDTge2GxtVWDC4qGlJOfszdvIb8DRwBnA14E3diy/F/An4B3A6o7lTwe+D9wM/A74KHDnHuUdAFwKXAd8HNgAeAUlQboGOArYsKsuBwAXADcBvwAOBqY6Hr8EeCfly/zVwJXAh2bWqdvOXbddgW3q/4/v2t6FwCEd93OtwwnA9ZRE77nApsCxwB+Bi4DnLDDWGdirx/JnUhr4R9b7hwO/BDaZ7bn1fThx3PuQN2/evPW6AV8ErgDu0uOxU+tjD6nHt8d2Pf6Yunzben/jeuy/DLgB+CHw7I71Z47zL6plXw+8r7YBGXhybeduAM4Dnta1vdsdY4H7AF+r7dGvgf2Bs4CPd6yzoDZpjpgtq+s9Y4D4Lkqb2SceC2ofgS3qdq6q63wL2Lnj8Tnfnx51vGTc+7a3hd/sodFiOwp4WUREvf8y4L/o6KGJiL+gNFBfBx4KvAR4BvDvXWXtBDyScoD6W2Av4BTKWbrd6v0XA3/fUfYhwD9QeioeDLyacnbqHV1lHwD8Fnh0/f9VtR7U53wDaCg9GfcAvj2/MHAwpTHcEfgycAzwOeB04GHAV4BjImJkZ8pyzqdQDvifjYg9KGcy98o5/7HX+nWo2hMpcVo1qnpI0qhExF0pvTFH5Jyv7bHKeyhfdu8DfIfSJnTaG/h2zvnC2i59iXJcfj6wA/BvwOfqsbDT+4Dj6jqdbdO/AO+uZXwXOKHWsVfdAziZ8mV9Z2CP+loe1mP1UbdJ11G++D8zIu7cb6UxtZnzah8j4o7AfwObAE+r65wKnB4RD+4qe7b35+H173NqHXeapY6adOPOqLwtzRu39ahsBPweeAKwPqV35dnAPtQeGuAzwPe6nv9M4Bbg3h3l/Y6O3hfKQW4FcIeOZacAX6j/34lyVma3rrL3BlZ23L8E+GLXOl8Fju+4fwZwdNc62zB4D82/dtzfvC77cMeyuzLg2bMese7ZQ1MfuzPwc+DPnXXqeu5NlMbuT/X+9cCjx70PefPmzVv3DXhUPU49q8/jd6uPH0Tpvb96pt0ANqzt0cvr/V3r8W/TrjI+CfxH/X/mOP+2rnV2rcs7e3O2qMue2rHs1uMz5WTcrb1DHfW9gTV7aObdJg0Qu2fVNnMVZcjeYcBfdzy+qG1mdzw67s+rfaR8f7iUjl6juvzMmbIGeX+ArRigd8tbO2720GhR5TJW9jPAvpQzUVOUM2Kdtqf0znT6HyCA7TqWnZ9z7uw5uAL4Wc755q5ld+8o947AiREtllGMAAAgAElEQVRx3cwNOBLYNCI273jeOV3bv5xy8BuVH838k3O+ipJg/Lhj2TWURubuaz514XLO1wPvpxy0/6nPagdTesaeQOm2f0vO+bujrIckjUjM8Xju+P8Eypf0Z9T7z6Cc5Dmh3t+JkuRc1tVG7AXcv6vc7/XZ3q1tR875SsqxvV/bsR2wIud8YcdzrgZ+Nlu51dBtUs75ZOCelBENJ9b6/FdEfKSuMq42c77t407AlsDKrnr+FWu+b/N5f9RiU+OugNYJR1LGJd8L+FTO+U+3jUC7VV7jWWsu/1OPx3otm0nUZ/4+j9JL0e3qjv+7h1h1ltPPLfVv94vZoMe63fXstWyQbS7EnwByzv1mlbuyNrAXRsSewM8j4oc55+4kU5LG7ReUY+8OlOFb3Xaof3+Wc74mIr5E6WE4qf79Ys55ZV1nPeAP9B5q1N0mXN+nPr2G5852HO/X1s1V7kjah3oC8Mx6e0+dHvrQiHg/i99m9jPf9nE94HxKj1O3G7ruz/f9UUuZ0GjR5ZzPj4j/Ax7HbWNsO50L7NK1bBfKAey8ITZ9LmU4wX1zzqcOUQ6Ug+L6Xcuuqn+XzyyIiLtTzoC1Us55RT1bd3hEPCznPGjjK0mLLud8dUR8Fdg/Ig7La15H8xbKReqn1/vHUHocHkCZfKbzS/DZlIvlN8o5/3SRqw6lPds8Irad6aWp13M8gDIZy3z0apMW4vz6d3MWv80clbMpyem1OeffDVHOTLKzWPXUWmSWqrXlqcB0zvmXPR57P/DwiPhgRDyoTrn5Ycr0wr9e6AZzztdRLgZ8d0TsHxEPjIjtI+IFEfG+eRZ3MfCIiLhfRExHxAY55xspQ7TeEBE7RsQjKI3nzbOWNAIRcbeIeGjHby7cq96/1wiK/zDwIOAFIyhLkkZtf8rQoTMjYreI2DoidoqI4yhDZ/epx2co13ZcQxlmdg1wWkc5Z1Ku9Tgpyu+j3TciHhERB0TEvotQ7zMow6uOqfXdkTIkezWD99zMWKNNmm3l+hs0Z0XES2pbsU1EPIMyicLFwDmL3WbO8/mzObaW/5WIeEp9LY+OiDfXUQaDWkG5fvQpEbFlv8kc1A4mNForcs431LHCvR77MWW2l10oB/vPUC74f8UItnso8FrKNTw/Ar5Z718yz6I+QDn4/YjSM/O4uvzvKAfEb1NmZTmKMvPLYtuDMozvh/X+u+r/7xy24HrG6xjgnRFhL66kiZJz/hVlxsvvUoY0/5KSuGwE/GXO+T871l1NmZ3socBxnUNvaw/0HpThaB+iTFX8Fcr1nr1Ovg1b70zpIbqeMgvYl2u9f0bpGZmPfm1SPzPt1P6URO58ylT+ZwK75JxnhiYvdps5tHpt7i6UnppPUYbHnUSZMGLg37jLOd9CiUeiTDLww9mfoUkWjiiRJEla+yJiE8qX6bfmnD887vpIbeXZV0mSpLWg/ibYakoPyd0pv++SKb/ZImmBHHImTZiIeEvnVJTdt3HXT5K0YHei/NjjuZQhZ+tRfsvsymEKtd3Qus4hZ9KEiYi7UX5srafO3zCQJMl2Q+u6oROalNLWlAuIt6TMDX9U0zSHjaBukiRJkjSrUSQ09wDu0TTND1JKm1DmUt+zaZrZfj/EbiFJmgxz/fL6usp2SpImw5zt1MiHnKWUTgGOaJrm9FlWy5dffvlIt7tQ09PTrFixYtzVmEjGpj9jMzvj098kxWb58uVgQtPPxLRTMFn7zaQxNv0Zm/6MTX+TFJtB26mRJjQppW2ArwM7NE1zbddj+wEHAcuappletWpVjxLWvqmpKVavXj33iusgY9OfsZmd8elvkmKz4YYbggnNrSa1nYLJ2m8mjbHpz9j0Z2z6m6TYDNpOjSyhSSltDPwP8K6maU6aY/WJOfM1SVnopDE2/Rmb2Rmf/iYpNvbQzGpi2imYrP1m0hib/oxNf8amv0mKzaDt1EimbU4pbQCcCBw7QDIjSZIkSSMxdEKTUgrgE8D5TdN8cPgqSZIkSdJgpkZQxuOAFwM/SSmdU5e9pWmaU0dQtiRJkiT1NXRC0zTNN3EMtiRJkqQxGEUPjSQteV86YeWIShq+nN2fv2wE9ZAkaWkYyaQAkiRJkjQOJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWmhp3BSRJ0rrn8MMPH3cVbnXggQeOuwqShmAPjSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLXWSH5YM6X0SeAZwO+aptlhFGVKkiRJ0lxGktAARwNHAMeMqDxJY/ClE1aOqKThy9n9+ctGUA9JkrTUjWTIWdM0XweuHkVZkiRJkjSoUfXQzCmltB9wELCsaRqmp6fX1qZnNTU1NTF1mTTGpr+lG5tR9dAMb/Lia2yWukltp2ApH3Mmw1KNrftNf8amvzbGZq0lNE3THAUcVe/mFStWrK1Nz2p6eppJqcukMTb9GZvFZ3z7G1Vsli9fPpJylopJbafAY85iW6qxdb/pz9j0N0mxGbSdcpYzSZIkSa1lQiNJkiSptUaS0KSUjgf+F3hgSunSlNLfj6JcSZIkSZrNSK6haZrmhaMoR5IkSZLmwyFnkiRJklrLhEaSJElSa621aZslSZKkYRx++OHjrsKtDjzwwHFXQZU9NJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLWWCY0kSZKk1jKhkSRJktRaJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGkmSJEmtZUIjSZIkqbVMaCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWmhpFISml3YDDgPWBjzdN895RlCtJkiRJsxm6hyaltD7wEeBpwHbAC1NK2w1briRJkiTNZRRDzh4FXNg0zUVN06wCPgc8cwTlSpIkSdKsRpHQ3BP4Tcf9S+sySZIkSVpUo7iGJnosy90LUkr7AQcBy5qmYXp6eugNf+ojFw5dBqwcQRnw0v23HUk5o2JsFtfU1NRI9uFJ89L9R/OapqamWL169UjKmhTGZulbjHbq7W9/+9BljMo73/nOcVfhdkZVn6X4mXK/6c/9pr91eb8ZRUJzKbB1x/2tgMu7V2qa5ijgqHo3r1ixYgSbnhxL7fWM0lKMzfT09JJ8XaNifPqbpNgsX7583FWYKLZT7TRJn6mlaKnG1v1mcY0qtoO2U6NIaP4PuH9K6T7AZcALgL8dQbmSJEmSNKuhr6FpmmY18CrgNOD8sqg5d9hyJUmSJGkuI/kdmqZpTgVOHUVZkiRJkjSoUcxyJkmSJEljMZIeGkmSJI3GgQceOJJyvPBd6wp7aCRJkiS1lgmNJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktdbUuCugxbH785cNXYa/MCxJkqRJZw+NJEmSpNYyoZEkSZLUWiY0kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJreW0zZIkSVLLHXjggSMpp40/22EPjSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptYb6HZqU0vOAQ4AHA49qmubsUVRKkiRJkgYxbA/NT4FnA18fQV0kSZIkaV6G6qFpmuZ8gJTSaGojSZIkSfPgNTSSJEmSWmvOHpqU0hnAlj0eOrhpmlMG3VBKaT/gIGBZ0zRMT08PXsu+Vo6gjNEYzeuZLFNTU0vydY2CsZmd8enP2EyuxWmnJsdSez0z/Ez1Z2z6Mzb9tTE2cyY0TdM8aRQbaprmKOCoejevWLFiFMVOjKX2eqA0fkvxdY2CsZmd8elvkmKzfPnycVdhothOtdMkfaYmjbHpz9j0N0mxGbSdcsiZJEmSpNYaKqFJKT0rpXQp8JfAV1JKp42mWpIkSZI0t2FnOTsZOHlEdZEkSZKkeXHImSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqraFmOZMkSf0deOCBIylnkn7oTpImjT00kiRJklrLhEaSJElSa5nQSJIkSWotExpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLWWCY0kSZKk1jKhkSRJktRaJjSSJEmSWsuERpIkSVJrmdBIkiRJai0TGkmSJEmtNTXMk1NK7wd2B1YBvwRe2jTNylFUTJIkSZLmMmwPzenADk3T/AXwc+DNw1dJkiRJkgYzVA9N0zRf67j7HeC5w1VHkiRJkgY3ymto/g746gjLkyRJkqRZzdlDk1I6A9iyx0MHN01zSl3nYGA1cOws5ewHHAQsa5qG6enphdX4dibncp3RvJ7JMjU1tSRf1ygYm9kZn/6MzeRanHZqNNxv+jM2/Rmb/oxNf22MTeSchyogpfQS4BXAE5umuWHAp+XLL798qO0CfOmEyUlodn/+snFXYeSmp6dZsWLFuKsxkYzN7IxPf5MUm+XLlwPEuOsxoUbSTo3KJO03k8bY9Gds+jM2/U1SbAZtp4ad5Ww34I3ALvNIZiRJkiRpJIa9huYIYBPg9JTSOSmlfx9BnSRJkiRpIMPOcrbtqCoiSZIkSfM1ylnOJEmSJGmtMqGRJEmS1FomNJIkSZJay4RGkiRJUmuZ0EiSJElqLRMaSZIkSa1lQiNJkiSptUxoJEmSJLWWCY0kSZKk1jKhkSRJktRaU+OuwDB2f/6yocuYnp5mxYoVI6iNJEmSpLXNHhpJkiRJrWVCI0mSJKm1TGgkSZIktZYJjSRJkqTWMqGRJEmS1FomNJIkSZJay4RGkiRJUmtFznkc2x3LRiVJa4hxV2BC2U5J0mSYs50aVw9NTMotpbRi3HWY1JuxMTbGZ52IjXob9/sy6fvNxNyMjbExNks+NnNyyBmsHHcFJpix6c/YzM749GdstBDuN/0Zm/6MTX/Gpr/WxcaEBv4w7gpMMGPTn7GZnfHpz9hoIdxv+jM2/Rmb/oxNf62LjQkNHDXuCkwwY9OfsZmd8enP2Ggh3G/6Mzb9GZv+jE1/rYvNuCYFkCRJkqSh2UMjSZIkqbVMaCRJkiS1lgmNJElSy6WUHpVS2qn+v11K6XUppaePu16TKKV0zLjroNHyGhpJktQKKaUHAfcEvts0zXUdy3drmuY/x1ez8UopvQN4GjAFnA48GjgLeBJwWtM07xpf7cYrpfTFrkUBPAE4E6Bpmj3WeqUmVErp8cCjgJ82TfO1cddnPuyhkSSpJVJKLx13HcYlpXQgcApwAPDTlNIzOx5+93hqNTGeCzwO2BnYH9izaZp3Ak8Fnj/Oik2ArYBrgQ8CH6i3P3b8v85KKX2v4/99gSOATYB3pJTeNLaKLYAJjSRJ7fGP467AGO0LPKJpmj2BXYG3pZReXR8b6NfEl7DVTdP8uWmaG4BfNk1zLUDTNDcCt4y3amP3SOD7wMHAH5qmOQu4sWma/2ma5n/GWrPx26Dj//2AJzdN84/AU4AXjadKCzM17gpIkqTbpJR+3OehALZYm3WZMOvPDDNrmuaSlNKuwBdSSvfGhGZVSulONaF5xMzClNKmrOMJTdM0twAfSil9vv69Er//zlgvpXRXSgdHNE1zFUDTNNenlFaPt2rzYw+NJEmTZQtgb2D3Hrffj7Fe43ZFSumhM3dqcvMMYBp4yNhqNRl2rsnMzBf4GRsALxlPlSZL0zSXNk3zPOCrwGfHXZ8JsSml9+ps4G4ppS0BUkob07KTBGaokiRNli8DGzdNc073Aymls9Z+dSbG3sDtzho3TbMa2DuldOR4qjQZmqa5uc/yFcCKtVydidY0zVeAr4y7HpOgaZpt+jx0C/CstViVoTnLmSRJkqTWcsiZeoqIHBF7zfM5l0TEWxerTuO0kHhoeBGxTY394xep/CW7z0qStK4woVnLImKLiPhw/SK1KiKuiogTI+Khcz97rboH8IVRFxoRZ0TE0fN8zmYRcXhEXBwRN9eYfSMiXrgW67co8ViIiNiqfsnfdZ7Pe3xEfK3G76aI+FVEfCEi7r1IVZ2XhewbkiRJXkOzFkXE1sC3gd8BrwTOBbYEXgt8JyL2zDkv2g+DRcSGOedVg6ybc75iseqxACcCy4CXAz+jXAD6aGCztVWBCYvHvEXEgyk/tvZJ4CDKnPzbAH8D3GV8NZOk9kgpPRD4HLAtcHDTNIePuUoTK6X0FuC+TdO8LKW0DXAxsEG97kkaKXto1q6PUGYceULO+as551/nnL+Xc34h5Rdrj46Ih9Sz74/tfGJEPKYu37be3zgiDouIyyLihoj4YUQ8u2P9maE6L4qIUyPieuDQiNi1Ln9yRHy9Pve8iHha1/ZuN8QqIu5Tz+7fFBG/joj9I+KsiPh412vcsNbr6oi4MiI+FBFTtYyjgScCL6nlz9nLEBHLgF2At+acv5Zz/lXO+fs554/mnI/oWveAiLig1vEXEXHwzLbr45dExDsXUr8e8ch1eydExPU1Js+NiE0j4tiI+GNEXBQRz+mq4xYRcXTtJfljRHwrInbueHyQ9+c39e9/13UvmS2G1VOB63LO++ecf5Rzvjjn/N8553/IOf+kbntmn/nbiDitbvuCiNglIu45sx/V+vxV1+t6TK3vjRFxTUQcFxF371rnJfW5N0fEpRHxT/PYN5ZHxJdqnS6KiH26yp7181DX2TEivl33j59HRBogbpLU6Q3AWU3TbLLQZCaldHRK6Z9GXK+xSintmlK6tHNZ0zTvbprmZeOqk9YtJjRrSUTclXI2/Iic87U9VnkPZarO+wDfAV7c9fjewLdzzhdGRABfAnak/ALwDsC/AZ+LiCd2Pe99wHF1nX/vWP4vlF9W3hH4LnBCrWOvugdwMmV6v52BPepreViP1Q8AfkvpQTkAeBW3TRn5auAbQEMZwnUPSo/VbK6j/KLvMyPizv1WiohDgH8A3gw8uG7r5cA7FrF+BwOnUmL4ZeAYypm70ymx+QpwTERsVut4R+C/Kb/C+7S6zqnA6VF6UDrN9v48vP59Tq3jTrPUccZvgbt2J659HErZnx4KnA8cD3wa+Fit83nAcRGxQX1dWwJfAy4FHkWZWnYHSs8adZ2/ofQOfYYyverrKb9mPfP+zBX799bn/gUlxh+PiAfUsuf8PNTYnwqspLz3L6H0VN0u6ZKkOdybMrpibFJK649z+9IkcpaztSQiHkX5YvrsnPPJPR6/G+X3Bd5A+QL/bmDLnPOqiNiQ8oX0LTnnI+uZ6/8Etsg5/6GjjE8Cd8s57xkR21C6d9+ecz60Y51dKV+qn5NzPqku2wK4Atgt53xaXZaBF+ecPxsRT6Z8Yb1/zvnCjvpeChyXc35ZXXYJ8OOc8x4d2/sqsLL2QhERZwCX5pz3mUfsnkX5Mn0X4MfAt4BTcs5n1sfvRJmW8tmdQ/YiYm/g8JzzsmHr1xmPjvuH5ZxfU+9vThlKeETO+YC67K7A1cDuOecv116FfwK2yTmv7ij7zFqv1wzy/kTEVpRemifknM8aMIbrAUcBfwdcA/xf3c5xOeff1HW2oewzr805/2tdthPwPeAfcs4fqMseBvwAeEjO+acRcSjwUuC+M0MaI2JH4Bxgl5zz1yPiG8Bvc8639opExKspicqmdT9fI/YddXp9zvmDddn6lMTkH+bxeXgZ8K/A1jnna+rjOwA/Ad6Wc15SZ0sljV5K6UzKiIE/UaaPPhjYB7gf8AfgE03THNKx/uOBfwa2o7TrbwM2pIzWyMAq4L+bptk9pfRgbjuRdBnw5qZpvljLORq4kZJM7QI8s2maM/rUcTPgU8CuwAXAacATmqZ5fK9hX3Ua8M82TfPxlNL9KG3tjrV+pwH7N02zsq57CXAE5QTrvSnH3ZcA61Pa4DsAN9SqPIDyy/PbNk2zV/e26w9+fhB4OmWK4E8B72ia5s9zvA1ST/bQrD1z/UBRZ2Z5AnAnyg+GUf/euS6HckZ+Q+CyiLhu5gbsBdy/q9zv9dnerb9vkHO+Evgz/X+BejtgxUwyU59zNeV6lr7lVpfPUu5AagJ4T2A3yln/7YD/ioiP1FW2B+4InNgVjyOBTWuysRj1+1FHHa+ixPDHHcuuoTRYM70AO1GumVrZVc+/Ys33bT7vz5xyzrfUxHM5pVfqPEoP1vmx5rC/H3X8P3Pt0I97LJt5XdsD3+m8Pivn/CNKA799xzpf79rO/wAbUb4MzKUzHn+mJI8z8Rjk87AdcP5MMlPL+WmtoyTNqWmav6b0JL+qaZqNKcfKvSnXeP4N8MqU0p4AKaV7UX7A8cPA5pRE5ZymaY4CjgX+uWmajWsyswGll/lrlOPqAcCx9XqdGX8LvIvSw//NWar5EeAmSi/339XboIIyWmQ5ZaTD1sAhXeskSlt8H0qP+T5N01xPGXVweX1NGzdNc/kc2/o0JSncltLz/xTA4WlaMCcFWHt+QTkLsQNl+Fa3Herfn+Wcr4mIL1EOlCfVv1/MOa+s66xH+SLWa6hR90X/1/epT6/JAWZLcAftyusuN89R7kByzjdTrjM6E3hPlKl2D42I93eU/zzg5z2efvUi1e9PAyzrLH89yhCuXj9WdUPX/fm+PwOpkxscDxwfEW8CfkgZ9nVWx2qdryHPsmy9HsvW2OQs60Sf5b3M9r4N8nmIAbcjSQNpmuasjrs/TikdT+lB+Q/gRcAZTdMcXx//fb318hhgY+C9TdPcApyZUvoy8EJuSyhOaZrmW/X/m3oVUoeiPQd4SE0yfppS+jRlqPggr+dCYObE5VUppQ+y5rDtw2eSlZTSlyiJ2ryklLagJEDLmqa5Ebg+pfQhSo/OOv0DqVo4E5q1JOd8dR3etH9EHNbjOpq3AFdSrr+Acj3GifU6gadz+y/BZ1POCG1UzzIvtvOAzSNi244hZ3eldCl/f55lraJ0Tw/r/Pp3c8p45psoQ55OHbLcUdWvl7Mpyem1OeffDVHOzJf0oepZh3ldBNx3mHIo8X9pdMyiV4ecbcptY83PpTT0H+l43s6UYRQX1fsLjf0gn4dzgX0jYtnMiYGI2L7WUZLmLaX0aMqw2R0ovcR3AD5fH94a+OWARS0HflOTmRm/ooxMmPEb5rY55Xtd57q/GrAOpJTuDhxOGTWwCeVk0TVdq3XO+HkDpe7zdW/KBEm/TenWUcjrMdhrlHpyyNnatT9l6NCZEbFbRGwdETtFxHHAE4B9cs431nW/SjmQnFD/ntZRzpnAGcBJEbFnRNw3Ih4RZdatfReh3mdQutaPqfXdkXKB9mrmf9b7YuAREXG/iJieubC8nyi/QXNWlBmyHhplJq5nULrFLwbOyTlfR7nm6N1RZl97YERsHxEviIj3LWb95unYWv5XIuIp9bU8OiLeHBF7zqOcFZTJEp4SEVv2m8yhU0S8PCKOjIinRsS2EfHgiHgj5SxZrx7D+TiCcn3T0RGxQ5QfwfwM8M2c8zfqOu8BnhMRb4qIB0SZYewQ4AMdQ9UWGvtBPg/HUcawfzbKbGePoUxScGOfMiVpLscBXwS2bppmU8rEOzM9z7+h/3Da7nbzcmDrlFLnd7J7Ua6l6fecXq6itMtbd5UzY2bExp06lm3Z8f976nb+ommau1CG7c41XH4+9ZvxG+BmYLppmmX1dpemabaf64lSPyY0a1HO+VfAIymTAxxJOXvzVcp1BH/ZeUF7vWj8OEp37nGdF5HnMpPDHpThaB+iXPj3FcoY3kHPCM2n3pnSQ3Q9Zfzwl2u9f0afru9ZfIDyhfxHlIPv4+ZY/zrKbFf7U764nk85g3Qm5YLzP9U6Hkr5PZ99a9nfrPcvWeT6DSznfBOll+JsygWQP6e8h49iHmfRcs63UOKRKBMz/HCAp32PcvbwI5TrYb5dn/8a4O0Dv4je9bmSMv55K8pkA18GfkoZ+jCzzqmUsdwvqY99CPgo8I8dRS0o9oN8HnLON1B6OjejxOLYuu4wPWWS1m2bAFc3TXNTSulRlOtcZhwLPCkVUymlzVJKM8OzruT2PePfpbSvb0gpbZBS2pUyW+Tn5lOZekH9ScAhKaU7pZS247ZZPGma5ipKkrRXSmn9lNLfcfukaxNKm7sypXRPykyQg7oS2Kxe7D9XPX9LuV7oAymlu6SU1ksp3S+ltMs8tifdjkPO1rKc828pX0b3H2Dd11K+lPd67EbgTfXW6/FL6HFmpc6K1Wv5VNf96Lp/MfDkmfsRsQmlV+QzHets06Pcl3Xdv4gBx/PW9W+mDMd7ywDrfgL4xCyPL7h+PeIxZwzrso267v+e8qOqr+xTx7MY7P05hjIscSA55x9SZuOZbZ1Luredc760x7Ireiz7DnO8rznnT1MuBO33eL99o1c8tu26P+vnoa7zQ+AvuxbP6wuDJHX4f5Qv5UdQJjlpKMNfaZrm1ymlp1Om4P845Tq/t1ImOPkE8PmU0krKb9rsmVLag3KS582UpGPvpmkuWECdXkU5YXYF5eTOpygjQGbsW7fz7lqPzunx/5HSrvyBci3NZ+jzHaRb0zQX1GuILqrX8mw3x1P2pgzXO4+SSF1E+ZkJaUGctlkDiYg9KF3Z51NmYXkH8Fjggf+/vfsPtu0s6wP+PckJzjDBpHV7iRciCGktERG0Rh0iYGttUFFs9WlRGoFCbAXLH050IKWAMzSMDjhSaPGqBTumME8dMKBoAkPR2tZf7eAn4JwAABBfSURBVERLhHEuFiVcMRxoUPlhes3xj73vcLzec+452St37/ecz2dmT/Zea+93PfvNujPnu993vWvxCz0AsEaq6llJntvd1666FnggmXLGfj0481+a7sx8StFFSa5dNsxsbGy8eOdSu2c/Jqj7SNjY2Lhzj358/flbAAAYkyln7Mv29vab88BMz3l95sP0LOcbM1815lzOXlEPgEFV1Z2ZrxR2tu/p7lsudD2wDpaeclZVV2Y+5/KKzO+zcqK7f2yC2gAAAPY0xZSz00m+v7sfk/nNoZ6/WFkDAADgATX5ogBVdWuS13b3O/d4m5UIANbDfu8zAQBradJraKrqkUmekPma6ns6derUlIe+32azWba2tlZdxlrSN7vTN3vTP7tbp745fvz+3OQbANbLZCM0VXVp5uuwv6K733KO/TdkfpOmy7t7du+99579lpXY3NzM6dOnz//GI0jf7E7f7E3/7G6d+uZBD3pQYoQGgMFNEmiq6pLMl/K9rbtfvY+PbBuhWX/6Znf6Zm/6Z3fr1DeLERqBBoChLb0oQFVtZH632fftM8wAAABMYopraJ6Y5J8l+T9Vdcdi24u7+x0TtA0AALCrpQNNd/9qTFkAAABWYIr70AAAAKyEQAMAAAxLoAEAAIYl0AAAAMMSaAAAgGEJNAAAwLAEGgAAYFgCDQAAMCyBBgAAGJZAAwAADEugAQAAhiXQAAAAwxJoAACAYQk0AADAsAQaAABgWAINAAAwLIEGAAAYlkADAAAMS6ABAACGJdAAAADD2lx1AcD6OHbyRdM0dDI5tmQTd1918ySlAACHmxEaAABgWAINAAAwLIEGAAAYlkADAAAMS6ABAACGNckqZ1X1H5N8c5K7u/uxU7QJAABwPlON0LwxyXUTtQUAALAvkwSa7v6VJB+foi0AAID9cg0NAAAwrEmuodmPqrohyY1JLu/uzGazC3XoPW1ubq5NLetG3+zu0PbNyVUX8FmHsn9ziM8dAFiRCxZouvtEkhOLl9tbW1sX6tB7ms1mWZda1o2+2d1h7Ztjqy5gh8PYv8l6nTvHjx9fdQkAsDRTzgAAgGFNEmiq6k1J/meSL66qu6rqn0/RLgAAwF4mmXLW3c+Yoh0AAICDMOUMAAAYlkADAAAMS6ABAACGJdAAAADDEmgAAIBhCTQAAMCwBBoAAGBYAg0AADAsgQYAABiWQAMAAAxrc9UF8MA4dvJFyzdyMjm2fCu5+6qbJ2gFAAD+OiM0AADAsAQaAABgWAINAAAwLIEGAAAYlkADAAAMS6ABAACGJdAAAADDEmgAAIBhCTQAAMCwBBoAAGBYAg0AADAsgQYAABiWQAMAAAxLoAEAAIYl0AAAAMPanKKRqrouyY8luTjJT3b3K6doFwAAYC9Lj9BU1cVJXpfkqUmuTvKMqrp62XYBAADOZ4opZ9ckOdndv9/d9yZ5c5JvnaBdAACAPU0RaB6W5EM7Xt+12AYAAPCAmuIamo1zbNs+e0NV3ZDkxiSXd3dms9nSB77o1563dBs5mRxbvpXc99U/MUEr07lvtnw9m5ubOX369NLtLP9/elrOm91Ncd4k05w7h/K8SSY5d9btvAGAVZoi0NyV5Modrx+e5NTZb+ruE0lOLF5ub21tLX3gKf6gnMoU32fdzGazQ/m9nDcPvMN47hzG8+b48eOTtAMAqzRFoPnNJH+rqr4oyYeT/NMk3zlBuwAAAHta+hqa7j6d5AVJbkvyvvmmvnPZdgEAAM5nkvvQdPc7krxjirYAAAD2a4pVzgAAAFZCoAEAAIYl0AAAAMMSaAAAgGEJNAAAwLAEGgAAYFiTLNsMcNjdfdXNk7Qzm82ytbU1SVsAgBEaAABgYEZoOHKm+KXdr+wAAOvBCA0AADAsgQYAABiWQAMAAAxLoAEAAIYl0AAAAMMSaAAAgGEJNAAAwLAEGgAAYFgCDQAAMCyBBgAAGJZAAwAADEugAQAAhiXQAAAAwxJoAACAYQk0AADAsAQaAABgWAINAAAwLIEGAAAY1uYyH66q70jysiSPSXJNd//WFEUBAADsx7IjNO9N8o+S/MoEtQAAABzIUiM03f2+JKmqaaoBAAA4gKUCzUFU1Q1JbkxyeXdnNpst3+jJ5ZuYyiTfZ81sbm4eyu81BX2zN/2zO30DANM6b6CpqnclueIcu27q7lv3e6DuPpHkxOLl9tbW1n4/uqtjS7cwnSm+z7qZzWaH8ntNQd/sTf/sbp365vjx46suAQCWdt5A091ffyEKAQAAOCjLNgMAAMNaKtBU1bdV1V1JvibJL1TVbdOUBQAAcH7LrnL21iRvnagWAACAAzHlDAAAGJZAAwAADOuC3YfmgXD3VTcv3cY6LaEKAAAcjBEaAABgWAINAAAwLIEGAAAYlkADAAAMS6ABAACGJdAAAADDEmgAAIBhCTQAAMCwBBoAAGBYAg0AADAsgQYAABiWQAMAAAxLoAEAAIYl0AAAAMMSaAAAgGEJNAAAwLAEGgAAYFgCDQAAMCyBBgAAGJZAAwAADEugAQAAhiXQAAAAwxJoAACAYW0u8+Gq+pEkT0tyb5IPJHl2d98zRWEAAADns+wIzTuTPLa7H5fk95K8aPmSAAAA9mepEZruvn3Hy19L8u3LlQMAALB/U15D85wkvzhhewAAAHs67whNVb0ryRXn2HVTd9+6eM9NSU4nuWWPdm5IcmOSy7s7s9ns/lU8sc3NzbWpZd3om93pm73pn93pGwCY1sb29vZSDVTVdyf5F0n+fnd/ap8f2z516tRSx53KbDbL1tbWqstYS/pmd/pmb/pnd+vUN8ePH0+SjVXXAQDLWHaVs+uS/GCSJx8gzAAAAExi2WtoXpvkIUneWVV3VNXrJ6gJAABgX5Zd5eyqqQoBAAA4qClXOQMAALigBBoAAGBYAg0AADAsgQYAABiWQAMAAAxLoAEAAIYl0AAAAMMSaAAAgGEJNAAAwLAEGgAAYFgCDQAAMCyBBgAAGJZAAwAADEugAQAAhiXQAAAAwxJoAACAYQk0AADAsDa2t7dXcdyVHBSAv2Zj1QUAwDJWNUKzsS6PqtpadQ3r+tA3+kb/HIm+AYChmXKW3LPqAtaYvtmdvtmb/tmdvgGACQk0ySdWXcAa0ze70zd70z+70zcAMCGBJjmx6gLWmL7Znb7Zm/7Znb4BgAmtalEAAACApRmhAQAAhiXQAAAAwxJoAACAYW2uugDWR1X9nSQPS/Lr3f1nO7Zf192/tLrKVq+qrkmy3d2/WVVXJ7kuyfu7+x0rLm3tVNV/6u7rV13Huqmqa5Nck+S93X37qusBgMPCogA7VNWzu/sNq65jFarqXyV5fpL3JXl8khd2962Lff+7u798lfWtUlW9NMlTM/8B4J1JvirJe5J8fZLbuvsVq6tutarqbWdt2kjydUnenSTd/S0XvKg1UVW/0d3XLJ4/L/N/X29N8g1J3t7dr1xlfQBwWJhy9le9fNUFrNDzknxFdz89yVOSvKSqXrjYd9TvJv7tSZ6Y5EmZ/1H69O7+oST/MMk/WWVha+DhSf4kyauTvGrx+NMdz4+yS3Y8vyHJP+jul2ceaL5rNSUBwOFz5KacVdXv7LJrI8lDL2Qta+biM9PMuvuDVfWUJD9bVY+IQHO6u/8iyaeq6gPd/SdJ0t2frqr7Vlzbqv3dJC9MclOSG7v7jqr6dHf/8orrWgcXVdXfyPyHo43u/miSdPcnq+r0aksDgMPjKI7QPDTJ9Umedo7Hx1ZY16p9pKoef+bFItx8c5JZki9dWVXr4d6qevDi+Vec2VhVlyU50oGmu+/r7h9N8uwkN1XVa3MEfyjZxWVJ/leS30ryN6vqiiSpqkvjRwIAmMxR/MPj55Nc2t13nL2jqt5z4ctZG9cn+Su/Gnf36STXV9WPr6aktfGk7v7zZP4H/I7tlyT57tWUtF66+64k31FV35T5FLQjr7sfucuu+5J82wUsBQAONYsCAAAAwzqKU84AAIBDQqABAACGdRSvoWENVdUXJ3lzkquS3NTdr1lxSWurql6c5FHd/dyqemSS/5vkksU1TwAAR4pAw7r4gSTv6e4n3N8GquqNSe7q7n89WVUrtlg++2e6++FntnX3v11dRQAA68WUM9bFI5LcucoCquriVR4fAICDs8oZK1dV707y5CT/P/Olo29K8qwkj07yiSQ/1d0v2/H+a5P8cJKrM78r/UuSPCjJ65JsJ7k3yX/t7qdV1WOS/Ickj0/y4SQv6u63Ldp5Y5JPZx6mnpzkW7v7XbvU+HlJ3pDkKUnen+S2JF/X3deea9rXYgnwn+nun6yqRyf5iSRftqjvtiTP7+57Fu/9YJLXZr509iOS/FLmy0FfnGQryeck+dSilL+d+V3nr+ruZ5597MW9cV6d5BszXx74DUleurgxKADAoWOEhpXr7r+X5L8leUF3X5rktzP/4/7yJN+U5F9W1dOTpKq+MMkvJvl3ST4/86ByR3efSHJLkh/u7ksXYeaSJG9PcnuSY0m+L8kti+t1zvjOJK9I8pAkv7pHma9L8pkkX5DkOYvHfm0kuTnJ8SSPSXJlkped9Z5Kcl2SL0ryuCTP6u5PJnlqklOL73Rpd586z7F+OvNQeFWSJyT5hiTPPUCtAABDcQ0Na6e737Pj5e9U1ZsyH0H5uSTfleRd3f2mxf6PLR7n8tVJLk3yysUNMd9dVT+f5Bn5bKC4tbv/++L5Z87VyGIq2j9O8qWLkPHeqvrpJE/a5/c5meTk4uVHq+rVSV561ttecyasVNXbMw9qB1JVD808AF3e3Z9O8smq+tHMR3SO+s1RAYBDSqBh7VTVVyV5ZZLHZj6V7HOS/JfF7iuTfGCfTR1P8qFFmDnjD5I8bMfrD+2jnc/P/N/Kzvf+wT5rSFUdS/KaJF+b+UjQRUn+31lv+8iO55/KvPaDekSSS5L8UVWd2XZR9vcdAQCGZMoZ6+g/J3lbkiu7+7Ikr8982lYy/+P80bt87uwLwk4lubKqdp7nX5j5tTS7feZcPpr5NK4rz2rnjE8u/vvgHduu2PH85sVxHtfdn5vkmfns9zmfg1zk9qEkf55k1t2XLx6f291fcoA2AACGYoSGdfSQJB/v7s9U1TWZX+dy+2LfLUleXPMhiLckuSzz4HNHkj9O8qgd7fx65mHjB6rqVUmemORpSb7yIMV0919U1VuSvKyqnpPkkZlftP/Bxf6PVtWHkzyzqn58sW9n6HpI5osb3FNVD0ty4wEO/8dJPq+qLuvuT5ynzj+qqtuTvKqqXpLkzzK/Jufh3f3LBzgmAMAwjNCwjr43yQ9V1Z8m+TdJ+syO7v7DzFfw+v4kH09yR+arhyXJTyW5uqruqaqf6+57k3xL5teVbCX590mu7+7334+aXpD59TgfSfLGzFcP2+l5mQeVjyX5kiT/Y8e+lyf58sxDzS9kHsT2ZVHrm5L8/uJ7nW8q2vWZT9P73cyntf1s5gsZAAAcSpZthvuhqp6V5Lndfe2qawEAOMqM0AAAAMNyDQ0sVNWdma8Udrbv6e5bLnQ9AACcnylnAADAsEw5AwAAhiXQAAAAwxJoAACAYQk0AADAsAQaAABgWAINAAAwrL8Et1Hm1zhc0ywAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e2d36470>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "qr_factor_returns = pd.DataFrame()\n",
    "\n",
    "for factor, factor_data in unixt_factor_data.items():\n",
    "    qr_factor_returns[factor] = al.performance.mean_return_by_quantile(factor_data)[0].iloc[:, 0]\n",
    "\n",
    "(10000*qr_factor_returns).plot.bar(\n",
    "    subplots=True,\n",
    "    sharey=True,\n",
    "    layout=(4,2),\n",
    "    figsize=(14, 14),\n",
    "    legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What do you observe?\n",
    "\n",
    "- None of these alphas are **strictly monotonic**; this should lead you to question why this is? Further research and refinement of the alphas needs to be done. What is it about these alphas that leads to the highest ranking stocks in all alphas except MR 5D smoothed to *not* perform the best.\n",
    "- The majority of the return is coming from the **short side** in all these alphas. The negative return in quintile 1 is very large in all alphas. This could also a cause for concern becuase when you short stocks, you need to locate the short; shorts can be expensive or not available at all.\n",
    "- If you look at the magnitude of the return spread (i.e., Q1 minus Q5), we are working with daily returns in the 0.03%, i.e., **3 basis points**, neighborhood *before all transaction costs, shorting costs, etc.*. Assuming 252 days in a year, that's 7.56% return annualized. Transaction costs may cut this in half. As such, it should be clear that these alphas can only survive in an institutional setting and that leverage will likely need to be applied in order to achieve an attractive return.\n",
    "\n",
    "## Turnover Analysis\n",
    "\n",
    "Without doing a full and formal backtest, we can analyze how stable the alphas are over time. Stability in this sense means that from period to period, the alpha ranks do not change much. Since trading is costly, we always prefer, all other things being equal, that the ranks do not change significantly per period. We can measure this with the **factor rank autocorrelation (FRA)**.\n",
    "\n",
    "[alphalens.performance.factor_rank_autocorrelation](https://quantopian.github.io/alphalens/alphalens.html?highlight=factor_rank_autocorrelation#alphalens.performance.factor_rank_autocorrelation)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f54e29e94e0>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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s/F6vXi93hodX+fNMukye2mkkcYfEV6v94Dq5B4xZpl0nHsaaaSRRvKo85p7DRyqaeHugi1btjB+/Hj69u1Lnz59uPnmm6msrDyo17z++utZu3ZtwjbXXHONazX6TZs28corryQ8tqysjEmTJjFo0CAGDhzI2WefTUlJSY36umTJEltm7d133817771Xo3Mli/nz57N169aDeo00/rio24IdqxLT0WCWee+999ixY0etnrNBgwbVElypqsrll1/OuHHjeOqpp4hEIkyePJl///vf3HTTTTW+djgcTlhE4J577qnxuQ3hfs4558RtM3fuXBut7/r162tcxGHJkiWoqkqbNm0AuOGGG2p0nlSwYMECOnToQOPGjQ/6tdL446HOC/caVGJKa+4OfPDBB/j9fjNkUFEU/vWvf/HCCy8wdOhQm8Y6atQovvrqK0pLS7n22msZOnQogwcPZunSpYCmbU6cOJGLLrqIsWPHsnLlSkaNGsXll1/OgAEDmDRpkunlHzVqFF9++SUAzz//PP369WPUqFHccMMNTJs2zbzmJ598wogRIzjllFNMLX7GjBl8+umnFBcXM2fOHNywfft2m2Bs27atmcn30ksvMWzYMIqLi5k8ebJJMtauXTvuvPNOioqKGD58ODt27GDVqlUsW7aM6dOnU1xczMaNG207it69ezNz5kzOOusshgwZwurVq7ngggvo06cPzz77rHn9Rx99lKFDh1JUVGS+2DZt2sSpp57KDTfcwOmnn87YsWMpKyvjtdde48svv2TSpEkUFxdTVlZW08ebRhquOBpt7nVWcz9cFLJr167l+OOPt32Wk5NDs2bNKCoq4tVXX+W4445j27ZtbN26la5duzJz5kz69u3Lvffey549exg2bBj9+/cH4PPPP+edd94hJyeHlStXsmbNGv7zn//QuHFjRo4cyapVq+jVq5d5ra1bt3L//fezZMkSsrOzCQaDdOrUyfx+27ZtLFy4kPXr1zN+/HiGDx/OP//5Tx577DGb8HRizJgxXHDBBbz++uv069eP0aNHc+yxx7Ju3ToWL17MwoUL8Xq9TJ06lZdffpnRo0dTWlrKiSeeyJQpU7j99tt57rnnuOaaayguLuaMM85gyJAhrtdq2rQpr776Krfccgt///vfWbhwIRUVFZx++umMGzeOd999lx9//JHXX38dVVW55JJL+Pjjj2nWrBk//vgjDz/8MHfffTdXXHEFb7zxBueddx5PP/00N910E926dTuQx5tGGq6o85p7OlrmwKGqquuDVlWVU045halTp3L99dfz6quvMnz4cEAzIS1btozHHnsM0Gh4f/nlF0B7SdWrV8/kwejevTtNmzYFoHPnzmzatMkm3P/73/9y8sknU69ePQCGDx/Ohg0bzO/PPPNMZFmmffv2KZmtunTpwkcffcS7777L+++/z7Bhw1i8eDEffPABq1evNrnky8vLzTqOPp+P4uJiAI4//njef//9pK5lFO7o2LEjpaWlZGdnk52djd/vZ8+ePbz77ru8++67ZrvS0lJ+/PFHmjVrRosWLejSpQug8drXlIc+jTRSQZ13qNYgzj0t3B1o3749b7xho65n3759bNmyhe7du1OvXj2++eYbFi9ebFZRUlWVOXPm0LZtW9txX3zxhUlMZMDgWAd33vbqkjHE41NN3AgEAgwdOpShQ4ciyzIrVqzA5/MxevRopk6NpeMXOekTccw7YZh7JEmy9VfktZ80aRJ/+tOfbMdt2rTJRvqkKArl5eUp3WMaadQEsizb6iTUOZjCPXmRXccNTYce/fv3p6ysjAULFgBaGblbb72VYDBIZmYmI0eO5NFHH2Xfvn0m1/upp57KU089ZQrbNWvW1Pj63bt35+OPP2b37t2Ew+GYF40bsrOzq418WbVqFbt37wagsrKStWvX0rx5c/r168drr71mstH9/vvv1VaBcnLMp4rTTjuN+fPnm33+9ddfqy1MHAgEDuiaaaSRCD179rTtoOse0g7VA4YkScydO5fXXnuNvn370r9/f/x+P1OmTAFg2LBhLFq0iLPOOss85pprrqGqqoqioiIGDhzIXXfdVePrN2nShCuvvJLhw4dz/vnn065du2qLgXTs2BFFUSgqKorrUN24cSOjRo1i0KBBnHHGGXTr1o1hw4bRvn17Jk+ezNixYykqKmLs2LFs27Yt4fVGjhzJI488wuDBg9m4cWPK93jqqady9tlnM2LECAYNGsTEiROrFdzBYJApU6akHappHBQ0b96cVq1aHe5uxIfJCpm8yE7zuR8CpMqpXVJSQiAQIBwOM2HCBM4///y4zsvDhaORJzx9T0cOauO+RD73uoCmRQrTAAAOLklEQVSEfO63/R1+/gH54QU0O6Y1pPncj0zMmjWL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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e2cf1c50>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ls_FRA = pd.DataFrame()\n",
    "\n",
    "for factor, factor_data in unixt_factor_data.items():\n",
    "    ls_FRA[factor] = al.performance.factor_rank_autocorrelation(factor_data)\n",
    "\n",
    "ls_FRA.plot(title=\"Factor Rank Autocorrelation\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sharpe Ratio of the Alphas\n",
    "\n",
    "The last analysis we'll do on the factors will be sharpe ratio. Implement `sharpe_ratio` to calculate the sharpe ratio of factor returns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "def sharpe_ratio(factor_returns, annualization_factor):\n",
    "    \"\"\"\n",
    "    Get the sharpe ratio for each factor for the entire period\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    factor_returns : DataFrame\n",
    "        Factor returns for each factor and date\n",
    "    annualization_factor: float\n",
    "        Annualization Factor\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    sharpe_ratio : Pandas Series of floats\n",
    "        Sharpe ratio\n",
    "    \"\"\"\n",
    "    return annualization_factor * factor_returns.mean() / factor_returns.std()\n",
    "\n",
    "\n",
    "project_tests.test_sharpe_ratio(sharpe_ratio)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "Let's see what the sharpe ratio for the factors are. Generally, a Sharpe Ratio of near 1.0 or higher is an acceptable single alpha for this universe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mean_Reversion_5Day_Sector_Neutral            1.37000000\n",
       "Mean_Reversion_5Day_Sector_Neutral_Smoothed   1.27000000\n",
       "Momentum_1YR                                  1.13000000\n",
       "Overnight_Sentiment                           0.12000000\n",
       "Overnight_Sentiment_Smoothed                  0.45000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "daily_annualization_factor = np.sqrt(252)\n",
    "sharpe_ratio(ls_factor_returns, daily_annualization_factor).round(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Question: What do you think would happen if we smooth the momentum factor? Would the performance increase, decrease, or no major change? Why?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Answer:** \n",
    "\n",
    "The _Momentum_1YR_ [FRA (Factor Rank Autocorrelation)](#Turnover-Analysis) plot is relatively flat with values ranging at or just below 1.0. \n",
    "If we smooth the momentum factor, the performance will not change significantly since it is already low and flat. Further smoothing won't lower the amount of trading costs."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Combined Alpha Vector\n",
    "\n",
    "To use these alphas in a portfolio, we need to combine them somehow so we get a single score per stock. This is a area where machine learning can be very helpful. In this module, however, we will take the simplest approach of combination: simply averaging the scores from each alpha."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Selected Factors: Mean_Reversion_5Day_Sector_Neutral_Smoothed, Momentum_1YR, Overnight_Sentiment_Smoothed\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>alpha_vector</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Equity(0 [A])</th>\n",
       "      <td>-0.58642457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(1 [AAL])</th>\n",
       "      <td>-0.45333845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(2 [AAP])</th>\n",
       "      <td>-0.69993898</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(3 [AAPL])</th>\n",
       "      <td>-0.06790952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Equity(4 [ABBV])</th>\n",
       "      <td>-1.21617871</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  alpha_vector\n",
       "Equity(0 [A])      -0.58642457\n",
       "Equity(1 [AAL])    -0.45333845\n",
       "Equity(2 [AAP])    -0.69993898\n",
       "Equity(3 [AAPL])   -0.06790952\n",
       "Equity(4 [ABBV])   -1.21617871"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "selected_factors = all_factors.columns[[1, 2, 4]]\n",
    "print('Selected Factors: {}'.format(', '.join(selected_factors)))\n",
    "\n",
    "all_factors['alpha_vector'] = all_factors[selected_factors].mean(axis=1)\n",
    "alphas = all_factors[['alpha_vector']]\n",
    "alpha_vector = alphas.loc[all_factors.index.get_level_values(0)[-1]]\n",
    "alpha_vector.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimal Portfolio Constrained by Risk Model\n",
    "You have an alpha model and a risk model. Let's find a portfolio that trades as close as possible to the alpha model but limiting risk as measured by the risk model. You'll be building thie optimizer for this portfolio. To help you out. we have provided you with an abstract class called `AbstractOptimalHoldings`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "from abc import ABC, abstractmethod\n",
    "\n",
    "\n",
    "class AbstractOptimalHoldings(ABC):    \n",
    "    @abstractmethod\n",
    "    def _get_obj(self, weights, alpha_vector):\n",
    "        \"\"\"\n",
    "        Get the objective function\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        weights : CVXPY Variable\n",
    "            Portfolio weights\n",
    "        alpha_vector : DataFrame\n",
    "            Alpha vector\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        objective : CVXPY Objective\n",
    "            Objective function\n",
    "        \"\"\"\n",
    "        \n",
    "        raise NotImplementedError()\n",
    "    \n",
    "    @abstractmethod\n",
    "    def _get_constraints(self, weights, factor_betas, risk):\n",
    "        \"\"\"\n",
    "        Get the constraints\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        weights : CVXPY Variable\n",
    "            Portfolio weights\n",
    "        factor_betas : 2 dimensional Ndarray\n",
    "            Factor betas\n",
    "        risk: CVXPY Atom\n",
    "            Predicted variance of the portfolio returns\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        constraints : List of CVXPY Constraint\n",
    "            Constraints\n",
    "        \"\"\"\n",
    "        \n",
    "        raise NotImplementedError()\n",
    "        \n",
    "    def _get_risk(self, weights, factor_betas, alpha_vector_index, factor_cov_matrix, idiosyncratic_var_vector):\n",
    "        f = factor_betas.loc[alpha_vector_index].values.T * weights\n",
    "        X = factor_cov_matrix\n",
    "        S = np.diag(idiosyncratic_var_vector.loc[alpha_vector_index].values.flatten())\n",
    "\n",
    "        return cvx.quad_form(f, X) + cvx.quad_form(weights, S)\n",
    "    \n",
    "    def find(self, alpha_vector, factor_betas, factor_cov_matrix, idiosyncratic_var_vector):\n",
    "        weights = cvx.Variable(len(alpha_vector))\n",
    "        risk = self._get_risk(weights, factor_betas, alpha_vector.index, factor_cov_matrix, idiosyncratic_var_vector)\n",
    "        \n",
    "        obj = self._get_obj(weights, alpha_vector)\n",
    "        constraints = self._get_constraints(weights, factor_betas.loc[alpha_vector.index].values, risk)\n",
    "        \n",
    "        prob = cvx.Problem(obj, constraints)\n",
    "        prob.solve(max_iters=500)\n",
    "\n",
    "        optimal_weights = np.asarray(weights.value).flatten()\n",
    "        \n",
    "        return pd.DataFrame(data=optimal_weights, index=alpha_vector.index)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Objective and Constraints\n",
    "Using this class as a base class, you'll implement the `OptimalHoldings` class. There's two functions that need to be implemented in this class, the `_get_obj` and `_get_constraints` functions.\n",
    "\n",
    "The `_get_obj` function should return an CVXPY objective function that maximizes $ \\alpha^T * x \\\\ $, where $ x $ is the portfolio weights and $ \\alpha $ is the alpha vector.\n",
    "\n",
    "The `_get_constraints` function should return a list of the following constraints:\n",
    "- $ r \\leq risk_{\\text{cap}}^2 \\\\ $\n",
    "- $ B^T * x \\preceq factor_{\\text{max}} \\\\ $\n",
    "- $ B^T * x \\succeq factor_{\\text{min}} \\\\ $\n",
    "- $ x^T\\mathbb{1} = 0 \\\\ $\n",
    "- $ \\|x\\|_1 \\leq 1 \\\\ $\n",
    "- $ x \\succeq weights_{\\text{min}} \\\\ $\n",
    "- $ x \\preceq weights_{\\text{max}} $\n",
    "\n",
    "Where $ x $ is the portfolio weights, $ B $ is the factor betas, and $ r $ is the portfolio risk\n",
    "\n",
    "The first constraint is that the predicted risk be less than some maximum limit. The second and third constraints are on the maximum and minimum portfolio factor exposures. The fourth constraint is the \"market neutral constraint: the sum of the weights must be zero. The fifth constraint is the leverage constraint: the sum of the absolute value of the weights must be less than or equal to 1.0. The last are some minimum and maximum limits on individual holdings."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Integration Test on Problem.solve:\n",
      "> constaints = [sum(weights) == 0.0, sum(cvx.abs(weights)) <= 1.0]\n",
      "> obj = optimal_holdings._get_obj(weights, alpha_vector)\n",
      "> prob = cvx.Problem(obj, constaints)\n",
      "> prob.solve(max_iters=500)\n",
      "> solution = np.asarray(weights.value).flatten()\n",
      "\n",
      "Tests Passed\n",
      "\n",
      "Running Integration Test on Problem.solve:\n",
      "> x = np.diag(np.arange(3))\n",
      "> s = np.diag(np.arange(4))\n",
      "> factor_betas = np.arange(4 * 3).reshape([4, 3])\n",
      "> risk = cvx.quad_form(weights * factor_betas, x) + cvx.quad_form(weights, s)\n",
      "> constaints = optimal_holdings._get_constraints(weights, factor_betas, risk)\n",
      "> obj = cvx.Maximize([0, 1, 5, -1] * weights)\n",
      "> prob = cvx.Problem(obj, constaints)\n",
      "> prob.solve(max_iters=500)\n",
      "> solution = np.asarray(weights.value).flatten()\n",
      "\n",
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "class OptimalHoldings(AbstractOptimalHoldings):\n",
    "    def _get_obj(self, weights, alpha_vector):\n",
    "        \"\"\"\n",
    "        Get the objective function\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        weights : CVXPY Variable\n",
    "            Portfolio weights\n",
    "        alpha_vector : DataFrame\n",
    "            Alpha vector\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        objective : CVXPY Objective\n",
    "            Objective function\n",
    "        \"\"\"\n",
    "        assert(len(alpha_vector.columns) == 1)\n",
    "        \n",
    "        return cvx.Minimize(-alpha_vector.T.values[0] * weights)\n",
    "    \n",
    "    def _get_constraints(self, weights, factor_betas, risk):\n",
    "        \"\"\"\n",
    "        Get the constraints\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        weights : CVXPY Variable\n",
    "            Portfolio weights\n",
    "        factor_betas : 2 dimensional Ndarray\n",
    "            Factor betas\n",
    "        risk: CVXPY Atom\n",
    "            Predicted variance of the portfolio returns\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        constraints : List of CVXPY Constraint\n",
    "            Constraints\n",
    "        \"\"\"\n",
    "        assert(len(factor_betas.shape) == 2)\n",
    "        \n",
    "        return [\n",
    "            risk <= self.risk_cap ** 2,\n",
    "            factor_betas.T * weights <= self.factor_max,\n",
    "            factor_betas.T * weights >= self.factor_min,\n",
    "            sum(weights) == 0,\n",
    "            sum(cvx.abs(weights)) <= 1,\n",
    "            weights >= self.weights_min,\n",
    "            weights <= self.weights_max\n",
    "        ]\n",
    "\n",
    "    def __init__(self, risk_cap=0.05, factor_max=10.0, factor_min=-10.0, weights_max=0.55, weights_min=-0.55):\n",
    "        self.risk_cap=risk_cap\n",
    "        self.factor_max=factor_max\n",
    "        self.factor_min=factor_min\n",
    "        self.weights_max=weights_max\n",
    "        self.weights_min=weights_min\n",
    "\n",
    "\n",
    "project_tests.test_optimal_holdings_get_obj(OptimalHoldings)\n",
    "project_tests.test_optimal_holdings_get_constraints(OptimalHoldings)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data\n",
    "With the `OptimalHoldings` class implemented, let's see the weights it generates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:106: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e19d8c50>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "optimal_weights = OptimalHoldings().find(alpha_vector, risk_model['factor_betas'], risk_model['factor_cov_matrix'], risk_model['idiosyncratic_var_vector'])\n",
    "\n",
    "optimal_weights.plot.bar(legend=None, title='Portfolio % Holdings by Stock')\n",
    "x_axis = plt.axes().get_xaxis()\n",
    "x_axis.set_visible(False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Yikes. It put most of the weight in a few stocks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f54e23f1160>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEMCAYAAADXiYGSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xm4HFW57/HvIhuQQRCzZUjCMSigggMKgqIiXgbDVQkKeRnulaBAHA6Ch6MIwpXIdAIyiDMBIkFUeEXRgMxwQLgyBBWUSYkQZBMIhCBTgJhQ54+1OqkUvXevvbuzd2Xn93meftJVteqtt7qz+621qrsqFEWBiIhIK6sMdQIiIrJiUMEQEZEsKhgiIpJFBUNERLKoYIiISBYVDBERyaKCIdlCCF0hhGkhhKdCCEUIYcfM9WaHEI4pTd8QQjhnuSUqIsuFCsYKKoRwXvrQLkIIi0IID4cQfhRCGNmB2MeEEGY3WbQnsB/wCWAj4PcD3MSngMMHuC4AIYQd074/HEJ4TWXZtSGE8/oZb1YIYXJGu8ml1738OLJ/e9DnNpYpsMtDCKGnl/349fLcrqzYuoY6AWnLTYAR38etgXOAjYGPDSRYCCHQ9/+JzYBHi6IYaKEAoCiK+e2sX7E+8GVgSgdjtjIbeH9l3nODuP0sIYRVgFAUxeJempwIfK8y76Xlm9XgCCGsVhTFwqHOY7hRD2PFtrAoiseLougpiuI3wLeBcSGENQBCCG8JIfw2hPB8elwaQti0sXII4YDUO/lICOFPwMvAQcDxwBtLR52TQwg3pPlvSvNmpxirhhCmhBAeDSEsDCHcG0LYr6+kq0NSA4lR8m3gqBBCd4ttfimEcH8I4aUQwgMhhKNDCF2NfIA3A8eW9nlsH+EWp9e9/HghxXpzCOGSEMJjIYQFIYQ/V/clRIeGEO4LIbwcQpgbQrgoLbsZeCNwfCmXMWnZ9iGEm0IIL4YQ5ocQLijvdwjhhLSP+4YQ/gosBN7Ux34832Q//pli7RBC+FcIYfdS/J3TvJ0r2/t0COGh9NpeFUL4t8r+fia1WxhCeCSEcFwIYURp+Q4hhN+HEJ4LITwbQriztI1N02vwvkrMJb2wEIdKixDCISGEC0MIzwI/Tss2DCGcH0J4MsW/OYTwwVKc1UII307/915O79tP+3jNVmoqGMPLi8T3tCsVjauB1wAfTo+1gStDCKuV1lkFOIU4RPRW4DLgZKCHOOy0EXAqcRjpNOLR9UbAe9P6JwEHE4/y3w5cAFwQQtipH3m3E+Ms4DHg2N4ahDjU9BXgKOBtwGHA50rrfIq4X6exdJ8f6Uf+ZWsD1wAfBd4BTAN+EkLYodTmBOLR/XdTm/8N3JWW7U587U8u5TInhDCK+H7OJr72ewDvBn5R2f7GwCTg08CWxNem34qi+F3Kc1oIYXQIYX3gJ8C3iqK4trK9g4G9gB2AkcDFjYUhhPHEnu804nt7BHAo0PiwXxW4FPj/aX+2Bo4j/l/ur8nA71KcySGENYEbiX8D49L8q4FrQwibp3W+THz/9yP2oMcDtw9g2yuHoij0WAEfwHnAtaXpLYC/A7em6QOBBUB3qc0GxD/E/dP0AUABfKgS+xhgdpNtTgZmlabXJPZKvlhpdwlwfWl6NnBMafoG4Jz+xGiSy44p9zHEP/KFwOZp2bXAeaX4C4BxlfX3B/5Zmp4FTM543ScDrwDPVx4j+ljnt8AP0/N1iMM+X+6j/TKvV5r3X8DDwKqleVun12D7NH0CsBgYnbEfPel1r+7H4aU2q6T36gbgKuAWoKu0/IT0WmxS+X9YAB9O07cAP6ts+z+BF4jDn29I7T/YS56bpuXv6+01SnEK4KxKm4PSazaiMv93wKnp+feJBT4M5t/vivrQOYwV244hhOeBEcDqwHXEI2eIR5f3FkUxr9G4KIq5aahiy0qcmQPc/qbAasQ/wLIbiUfzgxKjKIrfhBBuIZ7H+FRl8ZbAGsAvQwjlK22OAF4TQnhDURRPZuba8AiwTO+nSOcJQghrAd8APk7sHaxGfG+uSU3fnqav7uc2twRuKYriX6Vt/iG9/1uy9AsIc4qieDQz5neIPbSy8v+XV0II/we4L816Z1EUiyrtHy+K4qHSOveGEP6ZcrqRWECmV9a5kVjINymK4oEQv6BwbQjh+rTsV0VRPJC5D2XVnsF7gdHAMyGE8vzVgafT82nEYvhACOEa4vt0WaHzH02pYKzYbgMmAouAx4qieLmyvNmliENl/uKiKNo90VndTnUbgxHjK8Bt5fHppDHsOgH4W5P1BnIC/l9FUczqZdnpwG7Eo+i/EY+kv00cFikbyGWic97PF/oR76k+9qPhPcQP90ZvbnZG3GpOzd7bJfOLovhMCOF0YFdgF+CEEMLni6I4l9iDKa/TsGqT7Vb3fRXgbuJwWdO2qehukrb7EeIw4TdDCO8viuL5XvZvpaVzGCu2F4uimFUUxewmxeIeYMvKSdENgM3Tsr4sJB6BtzKLOKzx4cr8HTK20ckYFEUxE7iQeL6l7B7iENCb0mtVfTS+QZS7z63sAPykKIpfFEVxF/AQ8TVvuDtt66N9xGiWyz3A9mnMH4AQwtbAWvTjdeqPdN5kGnEY7izgpyGE9SrNNix/QSCE8DZgXZb2Su6l+Xu7gFLxKYriL0VRnFYUxThij2RSWvRE+ndUaRsbEntvrdxB/DLDP5u870vO7RRF8VxRFL8qiuJLwHbEXuCHMuKvdNTDGL5+RhwauSiE8FXiEdqpwKPARS3WfYj4QfB+4AFgQVEUC6qNiqJYEEL4DvEbPU8CdxKP5McTj9ha6kSMkq8D9xOPSj3Ffz6EcBJwUhqSupb4//4dwLuLovhaaZ8/kL7hswCYXxTFK9UNZPgrsEeIv2dYQOz5bAD8I+XzbAjhjLS/L6d81iKeY2l8Nfgh4IMhhI2J55zmE498v0Q8CT0FeD3wQ+CGoihuGUCeAGunD9+yfxVF8VSIX8m9gFjgTiIOrX0IOJtlj9hfBM4LIfwn8QD0+8AfiENLEM+9XBJCuJN4Xmpr4P8BpxRFsSiE8BbiubTLiOdVRgMfAG5Nr9fzIYTbgK+FEB5IeZxE3td/f0L8gsNvQwhHEw9ONiAOJ/6lKIpLQwhfIw4x3pli/l9ij30gQ2LD31CfRNFjYA8qJ717afMW4HKWntC8DNi0tPwAYFGT9VYlFpz5xGGDyWn+ZEonvUttpxAL0ULiEeV+lTaz6eWkd26MJjnumHIbU5n/rTT/vMr8A1n6ofA0cTjvC6Xl2wB/JH4AFsDYXrb7qtegsvyNxHHwF4A5xKK9zHtFLN6HE4esFgJzgZ+Xlm8L/KmUy5g0f3vg5tI+XMCyX2o4Abg/8/9PT4pdfdyZlh8NPEXpBDrxW3QvAJ8rb484LPpwyusa4I2VbX02tVuYtnsc6UQ0sUBckt77l9O/ZwHrVLZ7U9r234gHE0v+T7H0pPc+TfazO8WbU9r+L4F3peVfTO/7c+lxO/Dxof77rusjpBdNRKRfQggnAHsVRfHWoc5FBofOYYiISBYVDBERyaIhKRERyaIehoiIZFHBEBGRLMPtdxgaXxMRGZjqr+lfZbgVDObMmdPrsu7ububNm9fr8hzDJUYdcqhLjDrkUJcYdcihLjHqkMNgxRg1alSvy8o0JCUiIllUMEREJIsKhoiIZFHBEBGRLCoYIiKSRQVDRESyqGCIiEiWjvwOw8zGAWcS7xJ2jrtPqSxfHTifePOUp4C93X22mY0ELibee/c8dz+ktM7WxPsIrEG8p8Nh7j7oP8xbfPDuy0zPrSwfcfaMwUtGRGQItd3DMLMRxLts7Ua84fu+ZrZFpdmBwNPuvilwBnBymv8S8e5bX2kS+ofE2zRulh7j2s1VREQGrhNDUtsCs9z9QXdfSLyv8vhKm/HE+/RC7FHsZGbB3V9w98YdxJYws42Addz9ltSrOB/YowO5iojIAHViSGo08Z64DT3EG6k3bePui8zsGWAk0Ntv1UenOOWYo5s1NLNJpBvGuzvd3d29JtrV1dXn8maqQ1BV/Y030Dw6HaMOOdQlRh1yqEuMOuRQlxh1yKFOMaAzBaPZBauq5xpy2gyovbtPBaY22vR1vZROXJOlaiDx6nB9mTrkUJcYdcihLjHqkENdYtQhh8GKMZjXkuoBNi5NjyHecL1pGzPrAtYF5reIOaZFTBERGUSd6GHMBDYzs02AR4F9gP0qbWYAE4FbgL2A6/v6xpO7P2Zmz5nZ+4DbgP2B73YgVxERGaC2exjuvgg4BLgKuC/O8nvM7Dgza3wn9VxgpJnNAg4Hjmysb2azgdOBA8ysp/QNqy8A5wCzgL8DV7Sbq4iIDFxHfofh7pcTfytRnveN0vOXgAm9rDu2l/l3AG/vRH4iItI+/dJbRESyqGCIiEgWFQwREcmigiEiIllUMEREJIsKhoiIZFHBEBGRLCoYIiKSRQVDRESyqGCIiEgWFQwREcmigiEiIllUMEREJIsKhoiIZFHBEBGRLCoYIiKSpSM3UBIREVh88O7LTM+tLB9x9ozBS2Y5UA9DRESyqGCIiEgWFQwREcmigiEiIllUMEREJIsKhoiIZFHBEBGRLCoYIiKSRQVDRESyqGCIiEgWXRpEVijVSy/A8Lv8gkhdqYchIiJZVDBERCSLCoaIiGTpyDkMMxsHnAmMAM5x9ymV5asD5wNbA08Be7v77LTsKOBAYDFwqLtflebPBp5L8xe5+zadyFVERAam7R6GmY0Avg/sBmwB7GtmW1SaHQg87e6bAmcAJ6d1twD2AbYExgE/SPEaPuLuW6lYiIgMvU4MSW0LzHL3B919IXAhML7SZjwwPT2/GNjJzEKaf6G7v+zuDwGzUjwREamZThSM0cAjpemeNK9pG3dfBDwDjGyxbgFcbWZ/MLNJHchTRETa0IlzGKHJvCKzTV/rfsDd55jZ+sA1Zna/u/+u2jgVk0kA7k53d3eviXZ1dfW5vJnqd/yr+htvoHl0OkYdchhIjFbvB/T/PVlRX4vlEaMOOdQlhj4vmsRpO0LsFWxcmh4DzOmlTY+ZdQHrAvP7WtfdG/8+YWaXEIeqXlUw3H0qMDVNFvPmzes10e7ubvpaPhADideJPNqNUYccOhWjqr/x6rIfdYhRhxzqEqMO/zc7lUerGKNGjcqK04khqZnAZma2iZmtRjyJXf2p7QxgYnq+F3C9uxdp/j5mtrqZbQJsBtxuZmuZ2WsBzGwtYFfg7g7kKiIiA9R2wUjnJA4BrgLui7P8HjM7zswa13E4FxhpZrOAw4Ej07r3AA7cC1wJ/Lu7LwY2AG42s7uA24HfuvuV7eYqIiID15HfYbj75cDllXnfKD1/CZjQy7onAidW5j0IvKsTuYmISGfol94iIpJFBUNERLKoYIiISBYVDBERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsHfnhnqwcFh+8+zLT1QutjTi7ekUYERlO1MMQEZEsKhgiIpJFQ1IiMuQ03LliUMEQERlGqsUXOleANSQlIiJZVDBERCSLCoaIiGRRwRARkSwqGCIikkUFQ0REsqhgiIhIFhUMERHJooIhIiJZVDBERCSLCoaIiGRRwRARkSwqGCIikkUFQ0REsujy5rLSaXXvBdD9F0SaUQ9DRESyqGCIiEgWFQwREcmicxiDQPcrFpHhoCMFw8zGAWcCI4Bz3H1KZfnqwPnA1sBTwN7uPjstOwo4EFgMHOruV+XEFBGRwdX2kJSZjQC+D+wGbAHsa2ZbVJodCDzt7psCZwAnp3W3APYBtgTGAT8wsxGZMUVEZBB14hzGtsAsd3/Q3RcCFwLjK23GA9PT84uBncwspPkXuvvL7v4QMCvFy4kpIiKDqBNDUqOBR0rTPcB2vbVx90Vm9gwwMs2/tbLu6PS8VUwAzGwSMCnFpru7e8myuZ/cfpm2zb5vv8Elv28WdqnK8q6uLhYtWtT3Oh2OUd0PePW+tNqPurwWrfLobw4DyqMO+9GBGHX5f9GJ12JF+BsZjP3oSB6d+BvpRScKRmgyr8hs09v8Zj2fakwA3H0qMLXRZt68eb2k2Vx/23d3d/d7neURo6oT8YbitWg3h07kUZf9GK4xhuI97VQe7a5fl/1olceoUaOy4nRiSKoH2Lg0PQaY01sbM+sC1gXm97FuTkwRERlEnehhzAQ2M7NNgEeJJ7H3q7SZAUwEbgH2Aq5398LMZgA/M7PTgVHAZsDtxJ5Hq5giIjKI2u5huPsi4BDgKuC+OMvvMbPjzKzxA4RzgZFmNgs4HDgyrXsP4MC9wJXAv7v74t5itpuriIgMXEd+h+HulwOXV+Z9o/T8JWBCL+ueCJyYE1NERIaOLg0iIiJZVDBERCSLCoaIiGRRwRARkSwqGCIikkUFQ0REsuh+GCJDpHoflOVxGQmRTlIPQ0REsqhgiIhIFhUMERHJonMYIisxnUeR/lDBWEnog0FE2qUhKRERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsKhgiIpJFBUNERLLodxgiK6jqb2tAv6+R5Us9DBERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsKhgiIpJlWH+tVpf0FhHpnGFdMEREVjR1PtDVkJSIiGRRwRARkSwqGCIikqWtcxhm9nrgImAsMBswd3+6SbuJwDFp8gR3n57mbw2cB6wBXA4c5u6FmU0GDgaeTOt83d0vbydXERFpT7s9jCOB69x9M+C6NL2MVFSOBbYDtgWONbP10uIfApOAzdJjXGnVM9x9q/RQsRARGWLtfktqPLBjej4duAH4WqXNR4Fr3H0+gJldA4wzsxuAddz9ljT/fGAP4Io2cxIR6bc6fzupLtrtYWzg7o8BpH/Xb9JmNPBIabonzRudnlfnNxxiZn82s2mlHomIiAyRlj0MM7sW2LDJoqMztxGazCv6mA9xqOr4NH08cBrw2V7ym0Qc1sLd6e7u7jWRrq6uPpfnGIoYczPa9DenoXotWu3LQHJqd1+Gy350IsaK+loMp7+RusaAjILh7jv3tszM5prZRu7+mJltBDzRpFkPS4etAMYQh6560vPy/Dlpm0vefzM7G7isj/ymAlPTZNFXF7ITXcy6xKjqb7zhsh+dyGO47EcnYgyn16LdPOrwfgxWjFGjRmXFaXdIagYwMT2fCPymSZurgF3NbL00tLQrcFUawnrOzN5nZgHYv7F+Kj4NnwTubjNPERFpU7snvacAbmYHAv8AJgCY2TbA5939IHefb2bHAzPTOsc1ToADX2Dp12qvYOkJ71PMbCvikNRs4HNt5ikiIm1qq2C4+1PATk3m3wEcVJqeBkzrpd3bm8z/dDt5iYhI5+mX3iIikkUFQ0REsqhgiIhIFhUMERHJooIhIiJZVDBERCSLCoaIiGRRwRARkSzt/tJbZKWkS2HLykg9DBERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsKhgiIpJFBUNERLKoYIiISBYVDBERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsKhgiIpJFBUNERLKoYIiISBYVDBERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsKhgiIpJFBUNERLJ0tbOymb0euAgYC8wGzN2fbtJuInBMmjzB3aen+ScC+wPrufvapfarA+cDWwNPAXu7++x2chURkfa028M4ErjO3TcDrkvTy0hF5VhgO2Bb4FgzWy8tvjTNqzoQeNrdNwXOAE5uM08REWlTuwVjPDA9PZ8O7NGkzUeBa9x9fup9XAOMA3D3W939sRZxLwZ2MrPQZq4iItKGtoakgA0aH/ju/piZrd+kzWjgkdJ0T5rXlyXruPsiM3sGGAnMqzY0s0nApNSW7u7uXoN2dXX1uTzHUMSYm9GmvzkN1WvRal8GklO7+7Ki/r9YHjEGtP4lv39VjEWLFg04h4HkMZz+RuoaAzIKhpldC2zYZNHRmdto1jMoOrWOu08FpjbazJv3qpqyRHd3N30tz1GXGFX9jTdc9qMTedTltahDjDrk0KkYVSvq38hgxBg1alRWnJYFw9137m2Zmc01s41S72Ij4IkmzXqAHUvTY4AbWmy2B9gY6DGzLmBdYH6rXEVEZPlp9xzGDGBiej4R+E2TNlcBu5rZeulk965pXm7cvYDr3b1Vr0RERJajdgvGFGAXM3sA2CVNY2bbmNk5AO4+HzgemJkex6V5mNkpZtYDrGlmPWY2OcU9FxhpZrOAw2ny7SsRERlcbZ30dvengJ2azL8DOKg0PQ2Y1qTdEcARTea/BExoJzeppxFnz1hmenmMVYvI8qFfeouISBYVDBERyaKCISIiWVQwREQkiwqGiIhkUcEQEZEsKhgiIpJFBUNERLKoYIiISBYVDBERyaKCISIiWdq9gZIMgur1l0DXYBKRwacehoiIZFHBEBGRLCoYIiKSRQVDRESyqGCIiEgWFQwREcmigiEiIllUMEREJIsKhoiIZFHBEBGRLCoYIiKSRQVDRESyqGCIiEgWFQwREcmigiEiIll0PwwRWeHpnjGDQz0MERHJooIhIiJZVDBERCRLW+cwzOz1wEXAWGA2YO7+dJN2E4Fj0uQJ7j49zT8R2B9Yz93XLrU/APgW8Gia9T13P6edXEVEpD3t9jCOBK5z982A69L0MlJRORbYDtgWONbM1kuLL03zmrnI3bdKDxULEZEh1m7BGA9MT8+nA3s0afNR4Bp3n596H9cA4wDc/VZ3f6zNHEREZBC0+7XaDRof+O7+mJmt36TNaOCR0nRPmtfKnma2A/A34D/c/ZFmjcxsEjAp5UB3d3evAbu6uvpcnmO4xKhDDnWJUYcc6hKjDjnUJUYdcqhTDMgoGGZ2LbBhk0VHZ24jNJlXtFjnUuDn7v6ymX2e2Hv5X80auvtUYGojbl/fu+7E97KHS4w65FCXGHXIoS4x6pBDXWLUIYfBijFq1KisOC0Lhrvv3NsyM5trZhul3sVGwBNNmvUAO5amxwA3tNjmU6XJs4GTW+UpIiLLV7tDUjOAicCU9O9vmrS5CjipdKJ7V+CovoI2ilCa3B24LzehVpUyt5KuDDHqkENdYtQhh7rEqEMOdYlRhxzqFKPdk95TgF3M7AFglzSNmW1jZucAuPt84HhgZnocl+ZhZqeYWQ+wppn1mNnkFPdQM7vHzO4CDgUOyMwn9PUwsz+0arOyxKhDDnWJUYcc6hKjDjnUJUYdchjkGC211cNIQ0c7NZl/B3BQaXoaMK1JuyOAI5rMP4oWvRARERlc+qW3iIhkWdkKxtTWTVaaGHXIoS4x6pBDXWLUIYe6xKhDDnWKQSiKVt9wFRERWfl6GCIiMkAqGCIikkUFQ0REsgzrW7Sa2VuJF0gcTbwcyRxghrtn/xCwg3mMBm5z9+dL88e5+5UZ628LFO4+08y2IF688X53v7yNnM539/3bWP+DxCsN3+3uV2eusx1wn7s/a2ZrEK9u/B7gXuAkd3+mxfqHApf0dl2xzBxWA/YB5rj7tWa2H7A98cehU939X5lx3gx8EtgYWAQ8QLycTZ/7ILIiG7Y9DDP7GnAh8QcptxN/NBiAn5vZqy7DPoD4n8lsdyjxF/BfAu42s/GlxSdlrH8s8B3gh2b2X8D3gLWBI80s63peZjaj8rgU+FRjOjPG7aXnB6c8Xku8XH3u6zkNWJCenwmsS7zsywLgxxnrHw/cZmY3mdkXzewNmdst+zHwMeAwM/sJMAG4DXgvkHUZ/fSe/gh4TVpvDWLhuMXMdhxATlLRy4VMBzuHkUOdQ90M5x7GgcCW1SNGMzsduIf0q/Q2fJO8D7mDga3d/XkzGwtcbGZj3f1M8n5duRewFbA68DgwJh2hf4v4QXdiRowxxKP4c4g9rQBsA5yWsW7DqqXnk4Bd3P1JMzsVuJW813MVd1+Unm/j7u9Jz282szsz1n8Q2BrYGdgb+Gb6BevPgV+5+3MZMd7h7u80sy7iDbpGuftiM7sAuCtjfYjv6VZpvdOBy919RzM7i3hw8O5WAcxsXeKPU/cAGoXvibT+FHf/Z2YuvcW/wt13a9FmnZTDGOAKd/9ZadkP3P2LGdvZkHi/m1eAbxAPjPYk9tgOy7l9QbpnTlkAbjezdwOhcWWIFjGW9NbTa3s6sZjfTbza9dwW608BTnX3eWa2DeDAK2a2KrC/u9+YkcMfgV8Re5p/b9W+lxjbsPTmcUcRD7K2JV61e5K7/ykjxtrEH0TvSXxvFwJ/B37k7ucNJK+G4VwwXgFGAQ9X5m+UlrVkZn/uZVEANsjMY0RjGMrdZ6cj0IvN7I3kFYxF7r4YWGBmf3f3Z1OsF80saz+IxeEw4hWGv+rud5rZizl/BCWrpOuBrUL8I34y5fGCmS3qe9Ul7jazz7j7j4G7zGwbd7/DzDYHcoaCCnd/BbgauDr9Me8G7AucytIP3lb7sRqwFrAmsZczn1iQV+1rxYouYHFa77UA7v6PlFMOB64HdnT3x2HJh+9E4BfES+30ycze08uiQDzIaOXHxKG0XwKfNbM9gf3c/WXgfRnrA5wH/Jb4ev438FNiD248sRc2vtc1l5rHq/9ORwN/JB7gvCkjxklAY3j3NOAx4BPAp4CzaH6vnrKPuXujp/wtYO80BLw58DPi31Ar6wGvA/7bzB4nHshc5O5zMtZt+AGxAL8O+D2x2O1iZjulZe/PiPFT4BLivYiM+N5cCBxjZpu7+9f7kc8yhnPB+DJwXbrOVWPM+9+ATYFDMmNsQHzRq7edDcQ3M8fjZraVu98JkHoaHyceObwjY/2FZramuy8gHl0DS46isgpG+pA9w8x+kf6dS//f+3WBxvVoCjPb0N0fT0czWdehIV4u5kwzO4b4IXGLmT1CfH8O6nPNaJntpN7jDGBGOieS41zgfmAEsYD+wsweJH5AXpgZ4xxgppndCuxAuppyGiJreTScjHX3Za7CnArHyWb22cwYM4Ebaf76vy5j/Te7+57p+a/TEOf1ZrZ75vYh3hPnuwBm9sXSPn3XzA7MjHEEsdf4VXf/S4r1kLtv0o88yrZx90bBPMPiLaJbWdXMulIPeA13nwng7n8zs9Uzt/u0u38F+IqZfYh4IPNHM7uP2OvI+fHcqu5+BYCZnezuF6eQJxD4AAACo0lEQVQ8rku9+RxjSz2J081sprsfn4bR7wVUMKrc/cp0dLAt8WglEC+1PjMdsee4DFi78WFfZmY3ZMbYn3hStJzbImD/NITRyg7piK/xwd+wKvFoNJu79wATzOxjwLP9XHdsL4teIZ78zYnxDHCAmb2WeNTYBfS0Gi4o2buP2C9m5nCGmV2Uns8xs/OJH1Znu/vtfa+9JMaZFu8T8zbgdHe/P81/klhAcjxsZkcA0xv7b2YbEC+0mXtS/z7gc+7+QHVBKsStrG5mqzT+X7n7iRYvBvo74nmyHOXzoOdXlo3ICeDup5rZhcQP90eIR9j9/UXx+mZ2OPHvfB0zC+7eiJFzrvb7wOVpaOpKM/s2cXhpJyBnuHQZ7n4TcJOZfYnYW9ybvF9bv2RmuxIP0Aoz28Pdf21mHyb2aHO8YGYfdPebzewTpIMYd3/FzHIP7prSL71FhkAa3juSOGTTOME7l9hjmuLxdsatYuwF/MXd/9pk2R7u/usW658CXO3u11bmjwO+6+6bZeRwHHBK+dt/af6maT/2ahWjst4niD2/se7e7MZtva13bGXWD9I5tg1Tfi2/EZiGi78AbE48mHkE+DUwrXTura/1L3T3fXJz7iXGu4BTiAdi/5HymUg8p3Gwu7cc2TCzdxJ7wZsTz+F8NvWU3gDs6+7fGXCCRVHooYceNXpMmDDhM0MdYyhzmDBhwhoTJkx4+1DnUYfXom4xhu3XakVWYN+sQYwhy8HdX3T3u4c6jw6uP2xiDNtzGCJ11olv4LUbow451CVGHXKoU4zeqGCIDI1OfAOv3Rh1yKEuMeqQQ51iNKWCITI0OvENvHZj1CGHusSoQw51itGUviUlIiJZdNJbRESyqGCIiEgWFQwREcmigiEiIllUMEREJMv/AN/A92qKDu3YAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e292c2b0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "project_helper.get_factor_exposures(risk_model['factor_betas'], optimal_weights).plot.bar(\n",
    "    title='Portfolio Net Factor Exposures',\n",
    "    legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimize with a Regularization Parameter\n",
    "In order to enforce diversification, we'll use regularization in the objective function. We'll create a new class called `OptimalHoldingsRegualization` which gets its constraints from the `OptimalHoldings` class. In this new class, implement the `_get_obj` function to return a CVXPY objective function that maximize $ \\alpha^T * x + \\lambda\\|x\\|_2\\\\ $, where $ x $ is the portfolio weights, $ \\alpha $ is the alpha vector, and $ \\lambda $ is the regularization parameter.\n",
    "\n",
    "**Note:** * $ \\lambda $ is located in `self.lambda_reg`. *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Integration Test on Problem.solve:\n",
      "> constaints = [sum(weights) == 0.0, sum(cvx.abs(weights)) <= 1.0]\n",
      "> obj = optimal_holdings_regualization._get_obj(weights, alpha_vector)\n",
      "> prob = cvx.Problem(obj, constaints)\n",
      "> prob.solve(max_iters=500)\n",
      "> solution = np.asarray(weights.value).flatten()\n",
      "\n",
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "class OptimalHoldingsRegualization(OptimalHoldings):\n",
    "    def _get_obj(self, weights, alpha_vector):\n",
    "        \"\"\"\n",
    "        Get the objective function\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        weights : CVXPY Variable\n",
    "            Portfolio weights\n",
    "        alpha_vector : DataFrame\n",
    "            Alpha vector\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        objective : CVXPY Objective\n",
    "            Objective function\n",
    "        \"\"\"\n",
    "        assert(len(alpha_vector.columns) == 1)\n",
    "        \n",
    "        return cvx.Minimize(-alpha_vector.T.values[0] * weights + self.lambda_reg * cvx.pnorm(weights, 2))\n",
    "    \n",
    "    def __init__(self, lambda_reg=0.5, risk_cap=0.05, factor_max=10.0, factor_min=-10.0, weights_max=0.55, weights_min=-0.55):\n",
    "        self.lambda_reg = lambda_reg\n",
    "        self.risk_cap=risk_cap\n",
    "        self.factor_max=factor_max\n",
    "        self.factor_min=factor_min\n",
    "        self.weights_max=weights_max\n",
    "        self.weights_min=weights_min\n",
    "        \n",
    "\n",
    "project_tests.test_optimal_holdings_regualization_get_obj(OptimalHoldingsRegualization)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:106: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e078b278>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "optimal_weights_1 = OptimalHoldingsRegualization(lambda_reg=5.0).find(alpha_vector, risk_model['factor_betas'], risk_model['factor_cov_matrix'], risk_model['idiosyncratic_var_vector'])\n",
    "\n",
    "optimal_weights_1.plot.bar(legend=None, title='Portfolio % Holdings by Stock')\n",
    "x_axis = plt.axes().get_xaxis()\n",
    "x_axis.set_visible(False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Nice. Well diversified."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f54e03214e0>"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e02ca358>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "project_helper.get_factor_exposures(risk_model['factor_betas'], optimal_weights_1).plot.bar(\n",
    "    title='Portfolio Net Factor Exposures',\n",
    "    legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimize with a Strict Factor Constraints and Target Weighting\n",
    "Another common formulation is to take a predefined target weighting, $x^*$ (e.g., a quantile portfolio), and solve to get as close to that portfolio while respecting portfolio-level constraints. For this next class, `OptimalHoldingsStrictFactor`, you'll implement the `_get_obj` function to minimize on on $ \\|x - x^*\\|_2 $, where $ x $ is the portfolio weights  $ x^* $ is the target weighting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Integration Test on Problem.solve:\n",
      "> constaints = [sum(weights) == 0.0, sum(cvx.abs(weights)) <= 1.0]\n",
      "> obj = optimal_holdings_strict_factor._get_obj(weights, alpha_vector)\n",
      "> prob = cvx.Problem(obj, constaints)\n",
      "> prob.solve(max_iters=500)\n",
      "> solution = np.asarray(weights.value).flatten()\n",
      "\n",
      "Tests Passed\n"
     ]
    }
   ],
   "source": [
    "class OptimalHoldingsStrictFactor(OptimalHoldings):\n",
    "    def _get_obj(self, weights, alpha_vector):\n",
    "        \"\"\"\n",
    "        Get the objective function\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        weights : CVXPY Variable\n",
    "            Portfolio weights\n",
    "        alpha_vector : DataFrame\n",
    "            Alpha vector\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        objective : CVXPY Objective\n",
    "            Objective function\n",
    "        \"\"\"\n",
    "        assert(len(alpha_vector.columns) == 1)\n",
    "        \n",
    "        alpha_vec_vals = alpha_vector.values[:,0]\n",
    "        x_star = (alpha_vec_vals - np.mean(alpha_vec_vals)) / sum(abs(alpha_vec_vals))\n",
    "        return cvx.Minimize(cvx.pnorm(weights-x_star, 2))\n",
    "\n",
    "\n",
    "project_tests.test_optimal_holdings_strict_factor_get_obj(OptimalHoldingsStrictFactor)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:106: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54df9fd198>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "optimal_weights_2 = OptimalHoldingsStrictFactor(\n",
    "    weights_max=0.02,\n",
    "    weights_min=-0.02,\n",
    "    risk_cap=0.0015,\n",
    "    factor_max=0.015,\n",
    "    factor_min=-0.015).find(alpha_vector, risk_model['factor_betas'], risk_model['factor_cov_matrix'], risk_model['idiosyncratic_var_vector'])\n",
    "\n",
    "optimal_weights_2.plot.bar(legend=None, title='Portfolio % Holdings by Stock')\n",
    "x_axis = plt.axes().get_xaxis()\n",
    "x_axis.set_visible(False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f54dfb46b70>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e0ba97f0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "project_helper.get_factor_exposures(risk_model['factor_betas'], optimal_weights_2).plot.bar(\n",
    "    title='Portfolio Net Factor Exposures',\n",
    "    legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Submission\n",
    "Now that you're done with the project, it's time to submit it. Click the submit button in the bottom right. One of our reviewers will give you feedback on your project with a pass or not passed grade. You can continue to the next section while you wait for feedback."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
